




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Web2224 SQL注入攻 第PAGE第PAGE1024Script(XSSHTMLJavaScriptAPIXSS缺陷。XSS让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意XSSXSSXSSDOMBasedXSS。XSS做到:$var的值为<a$var的值为<imgsrconerror=alert(1HTML内容语境中显示“用户可控数据”HtmlContent进行转义。<inputtype="text"name="a"value="$var"$var的值为<textarea<inputtype="text"name="a"value="$var"$var的值为<textareavardata=$varvardata=$var的值为<button<buttononclick="funcA('$var$var的值为CSS中输出的“用户可控数据”CSSescapeURL的输出是“用户可控数据”URLURL”StringuserURL=request.getParameter("userURL")StringuserURL=request.getParameter("userURL")if(isValidURL){<ahref="<%=<a<a<aHTMXSS漏洞,转义发生在模板引擎或者明确知XSS问题的框架,如:Ruby3.0ReactJS,需要XSS保护的局限性,并适当地处理未覆盖的用例。DOM-basedXSSif(portal.appGlobal.get('portalId')===portalList[i].portalId){that.$('.portalMenu').append("<liclass='portal-menuitemactive'>"+"<ahref='javascript:void0'>"+fish.escape(portalList[i].portalName)+'</a>'+if(portal.appGlobal.get('portalId')===portalList[i].portalId){that.$('.portalMenu').append("<liclass='portal-menuitemactive'>"+"<ahref='javascript:void0'>"+fish.escape(portalList[i].portalName)+'</a>'+OWASPXSS问题的思路可参考如下链接:CookieHttpOnlyCookieHttpOnlyXSSCookieAJAXHTTP/1.1Date:Wed,HTTP/1.1Date:Wed,06Feb201310:28:54<div<divid="init_data"style="display:vardataElement=document.getElementById('init_data');varinitData=JSON.parse(dataElement.textContent);XSS攻击。现。Web开发的普遍的做法,在客户端的JavaScript中和服务端代码中实现相同的输入检查。在客户端JavaScript中进行输入校验,可以阻挡大部分误操作的用户,从而节约服务器资源。if(/(.)\1{2}/.test(password))if(/(.)\1{2}/.test(password))publicpublicstaticbooleancheckPwdContinuousChar(Stringpwd){Patternp=Ppile("(.)\\1{2}");Matchermatcher=p.matcher(pwd);returnmatcher.find();1+1<31+1<3。publicstaticStringstripXSS(Stringvalue){if(value!=null){StringoriValue=//Avoidnullvalue=value.replaceAll("","");PatternscriptPattern=Ppile("<[\r\n||]*script[\r\n||]*>(.*?)</[\r\n||]*script[\r\n||]*>",Pattern.CASE_INSENSITIVE);value=scriptPattern.matcher(value).replaceAll("");scriptPattern=Ppile("expression\\((.*?)\\)",Pattern.CASE_INSENSITIVE|Pattern.MULTILINE|Pattern.DOTALL);value=//old:scriptPattern=javascript[\r\n||]*:[\r\n||]*",Pattern.CASE_INSENSITIVE);value=scriptPattern.matcher(value).replaceAll("");//AvoidSQLinjection//addbyshi.pengyan2013-6-scriptPattern=Ppile(SQL_REG,Pattern.CASE_INSENSITIVE);value=scriptPattern.matcher(value).replaceAll("");//value=StringEscapeUtils.escapeHtml(value);value=htmlEncode(value);privatestaticStringhtmlEncode(Stringvalue){if(value==null){return
//value=value.replaceAll("\\(","(").replaceAll("\\)",")");value=value.replaceAll("&","&");value=value.replaceAll("'","'").replaceAll("\"",value=value.replaceAll("<","<").replaceAll(">",">");returnvalue;Forgery(CSRFWeb服务器发出任意的请求,WebURL,图像加载,XMLHttpRequest,form表单等来完成,并且可能导致数据暴露或意外的代码执行。$(function()vartoken$(function()vartoken=varheader=$(document).ajaxSend(function(e,xhr,options){xhr.setRequestHeader(header,token);<form<form <input value="Logout"<input StringactualToken=request.getHeader(csrfToken.getHeaderName());if(actualToken==null){if(this.logger.isDebugEnabled()){this.logger.debug("InvalidCSRFtokenfoundfor+StringactualToken=request.getHeader(csrfToken.getHeaderName());if(actualToken==null){if(this.logger.isDebugEnabled()){this.logger.debug("InvalidCSRFtokenfoundfor+if(missingToken){newelsePOSTGETformAjax的形式提交;URL中不要CSRF的防御方案将会失效。publicvoidinit(FilterConfigfilterConfig)throwsServletException{XFrameOptions=filterConfig.getInitParameter("XFrameOptions");publicvoiddoFilter(ServletRequestservletRequest,publicvoidinit(FilterConfigfilterConfig)throwsServletException{XFrameOptions=filterConfig.getInitParameter("XFrameOptions");publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{HttpServletResponseresponse=(HttpServletResponse)servletResponse;if(!StringUtil.isEmpty(XFrameOptions)){response.addHeader("X-Frame-Options",XFrameOptions);“ContentSecurityPolicy”(指令较多且比较严格,使用时需要花时间了解下各个指令的含义)NOScriptWeb服务器上进行配置。CrossOriginResourceSharing,跨域资源共享,解决浏览器同源策略限制,允许脚本的跨域请求,同时也会HTTPHeader进行精确的控制:/NginxAjaxSQL注入、NoSQL注入、SQLSQL注入的示例代码如下:HttpServletRequestrequest,HttpServletRequestrequest,HttpServletResponseresponse){JdbcConnectionconn=newJdbcConnection();finalStringsql="select*fromproductwherepnamelike+request.getParameter("pname")+"%'";<select<selectid="unsafe"resultType="com.ztesoft.zsmart.pot.dto.RoleDto"> ROLE_CODE='$roleCodeSQLSQL语句中的变量做绑定。用户拼接进来的变量,“?”SQLfinalStringsqlfinalStringsql="select*fromproductwherepnamelike?";java.sql.PreparedStatementps=ps.setObject(1,"%"+request.getParameter("pname")+"%");ResultSetrs=ps.executeQuery();<selectid="<selectid="unsafe"resultType="com.ztesoft.zsmart.pot.dto.RoleDto"> ROLE_CODE=另外,检查数据类型、使用安全的存储过程、使用安全编码函数等。SQL注入问题可参考《Java语言1.2SQL防御实施方案。eval()、system()等可以执行命令的函数。如果一定要用,则必须对用户输入数Web应用程序在处理用户上传的文件时,没有判断文件的扩展名是否在允许的范围内,就把文件保存checkFileSize(file.getSize(),uploadProperties.getMaxFileSize());////StringcurrentFileHeader=String[]expectFileHeaderArr=initFileTypes.get(expectFileType);BooleanretFlag=false;//for(StringexpectFileHeader:expectFileHeaderArr){retFlag=#file.upload.directory=/home/uploadStringfileName=UUID.randomUUID()+"."+if(isStrictValidation&&if(isStrictValidation&&(fileDirectory.contains("./")||fileDirectory.contains(".\\"))){logger.error("filePathcontains./or../");IDwebif(!DownloadPrivUtil.getInstance().validatePathPriv(session,realFilePath)){response.getWriter().print("Youif(!DownloadPrivUtil.getInstance().validatePathPriv(session,realFilePath)){response.getWriter().print("Youhavenopermissiontodownloadthisfile.");if(isStrictValidation&&(realFilePath.contains("./")||realFilePath.contains(".\\"))){response.getWriter().print("Cannotdownloadthisfile.");directory=canDownload=true;if(needDelete)if(needDelete)webURL,从而访问或控制其他权SpringSecurityRBAC模型的一个实现,一种是“URL的访问<http-basic<http-basicprotectedprotectedvoidconfigure(HttpSecurityhttp)throwsException{//@PostFilter("hasPermission(filterObject,'read')@PostFilter("hasPermission(filterObject,'read')orhasPermission(filterObject,'admin')")publicList<Contact>getAll();AC不同角色的权限有高低之分,高权限角色访问低权限角色的资源往往是被允许的,而低权限角色访问高权相对于垂直权限,水平权限问题是同一个角色上,Web应用程序接收到用户修改信息的请求,未对该ID,达到修改其他用户数据的目的。即缺少一个用户与数据的对应关系。id,各开发人员在编码时要注意此类场景,非此类场景的请求,需要确保应用中具有垂直权限 CookiehttponlysecureCookieCookiehttponlycookieCookieCookie。CookieSecurehttpsCOOKIE,开发人员需response.setHeader("SET-COOKIE","user="+request.getParameter("cookie")response.setHeader("SET-COOKIE","user="+request.getParameter("cookie")+";HttpOnly;SecureSessionFixationExpiresSessionFixation,sessionURLjsessionidSessionID,然后发送给用户sessionsessionsessionprivatevoidsessionManagement(HttpSecurityhttp)privatevoidsessionManagement(HttpSecurityhttp)throwsException{publicstaticvoidreGenerateSessionId(){HttpSessionpublicstaticvoidreGenerateSessionId(){HttpSessionsession=currentSession.get();HttpServletRequestreq=RequestUtil.getRequest();if(session!=null&&req!=null){sessionMapMap<String,Object>tempMap=newHashMap<String,Object>();Enumeration<String>sessionNames=session.getAttributeNames();while(sessionNames.hasMoreElements()){StringsessionName=sessionNames.nextElement();session,sessionIdsession=for(Map.Entry<String,Object>entry:tempMap.entrySet()){session.setAttribute(entry.getKey(),entry.getValue());SessionIDSession设置强制超时时间,攻击者一privatevoidsessionManagement(HttpSecurityhttp)privatevoidsessionManagement(HttpSecurityhttp)throwsException{////LongmaxIdleMinutes=30minDatedate=newDate(DateUtil.getNowDate().getTime()-1000*60*//同时将在线用户标记为XList<SsoUserOnlineDtolistnew//if(list!=null&&!list.isEmpty())if(!isUserOnline){("userhasoffline.sessionId=[{}],userId=[{}]",session.getId(),userId);returntrue;WebURLURL的值为恶意站点的地址,URLURLStringStringtrustedList=ConfigurationMgr.instance().getString("urlRedirect.trustedList","");if(StringUtil.isNotEmpty(trustedList)&&trustedList.indexOf(paramValue)<0){StringrootStr=UrlUtil.getWebRoot(request);统上的文档(file://gopher://tftp://,可以提供对请求内容的更大控制。privatevoidvalidateWsUrl(StringwsUrl)throwsBaseAppException{privatevoidvalidateWsUrl(StringwsUrl)throwsBaseAppException{StringappWsUrlRegExp=if&&!"false".equalsIgnoreCase(appWsUrlRegExp)&&StringUtil.isNotEmpty(wsUrl)){String[]params=wsUrl.split(";");Patternpattern=Ppile(appWsUrlRegExp);if(!pattern.matcher(params[0]).matches()){publicpublicbooleanverifyAdmin(Stringpwd){if(pwd.equals("34783fdfsd9sfds")){byte[]key= byte[]key= "MyEncryptionKey".getBytes();DESKeySpecdesKeySpec=newDESKeySpec(key);ECBRC4;saltsIVCBCAES256WebXSS、CSRF、SQL注入、访问控制、认
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八年级物理第4章第4节:光的折射
- 太阳能发电站智能维护技术考核试卷
- 有机肥料在农业可持续发展中的作用考核试卷
- 意外伤害保险与应急救援体系的融合考核试卷
- 学术人才引进与培养考核试卷
- 医疗设备在精准医疗领域的创新应用与挑战解决策略考核试卷
- 医疗器械在跨学科协作中的价值考核试卷
- 文具行业品牌年轻化考核试卷
- 动物药品零售企业财务管理考核试卷
- 收购农村车库合同范本
- GB/T 19830-2023石油天然气工业油气井套管或油管用钢管
- 现场签证流程图
- (新插图)人教版四年级下册数学 第2招 巧算24点 期末复习课件
- 驾驶员违规违章安全教育谈话记录表
- 2023年10月山东青岛开放大学招考聘用工作人员(第二批)笔试历年高频考点试题含答案带详解
- 小儿抽动症中西医治疗
- 一年级下册《综合实践活动》全册教案【完整版】
- 人教版小学一年级英语课本上册课件
- 电子对抗原理与技术PPT完整全套教学课件
- 烹饪美学PPT完整全套教学课件
- 人美版初中美术知识点汇总九年级全册
评论
0/150
提交评论