版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
什么是XSS(CrossSiteScripting)攻击XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本(可以理解为javascript)。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(sameoriginpolicy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。数据来源:2007OWASPTop10的MITRE数据注:OWASP是世界上最知名的Web安全与数据库安全研究组织在2007年OWASP所统计的所有安全威胁中,跨站脚本攻击占到了22%,高居所有Web威胁之首。XSS攻击的危害包括1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力3、盗窃企业重要的具有商业价值的资料4、非法转账5、强制发送电子邮件6、网站挂马7、控制受害者机器向其它网站发起攻击1.2XSS漏洞的分类XSS漏洞按照攻击利用手法的不同,有以下三种类型:类型A,本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。其攻击过程如下所示:Alice给Bob发送一个恶意构造了Web的URL。Bob点击并查看了这个URL。恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在Bob电脑上。具有漏洞的HTML页面包含了在Bob电脑本地域执行的JavaScript。Alice的恶意脚本可以在Bob的电脑上执行Bob所持有的权限下的命令。类型B,反射式漏洞,这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。其攻击过程如下:Alice经常浏览某个网站,此网站为Bob所拥有。Bob的站点运行Alice使用用户名/密码进行登录,并存储敏感信息(比如银行帐户信息)。Charly发现Bob的站点包含反射性的XSS漏洞。Charly编写一个利用漏洞的URL,并将其冒充为来自Bob的邮件发送给Alice。Alice在登录到Bob的站点后,浏览Charly提供的URL。嵌入到URL中的恶意脚本在Alice的浏览器中执行,就像它直接来自Bob的服务器一样。此脚本盗窃敏感信息(授权、信用卡、帐号信息等)然后在Alice完全不知情的情况下将这些信息发送到Charly的Web站点。类型C,存储式漏洞,该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。其攻击过程如下:Bob拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。Charly注意到Bob的站点具有类型C的XSS漏洞。Charly发布一个热点信息,吸引其它用户纷纷阅读。Bob或者是任何的其他人如Alice浏览该信息,其会话cookies或者其它信息将被Charly盗走。类型A直接威胁用户个体,而类型B和类型C所威胁的对象都是企业级Web应用。传统防御技术1基于特征的防御XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同。这就给XSS漏洞防御带来了困难:不可能以单一特征来概括所有XSS攻击。传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。这种检测方法的缺陷显而易见:骇客可以通过插入字符或完全编码的方式躲避检测:躲避方法1)在javascript中加入多个tab键,得到<IMGSRC="javascript:alert('XSS');">;躲避方法2)在javascript中加入(空格)字符,得到<IMGSRC="javascript:alert('XSS');">;躲避方法3)在javascript中加入(回车)字符,得到<IMGSRC="javascript:alert('XSS');">;躲避方法4)在javascript中的每个字符间加入回车换行符,得到<IMGSRC="javascrip\r\nt:alert('XSS');">躲避方法5)对"javascript:alert('XSS')"采用完全编码,得到<IMGSRC=javascrip?74:alert('XSS')>上述方法都可以很容易的躲避基于特征的检测。而除了会有大量的漏报外,基于特征的还存在大量的误报可能:在上面的例子中,对上述某网站这样一个地址,由于包含了关键字“javascript”,也将会触发报警。2基于代码修改的防御和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免:步骤1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。步骤2、实现Session标记(sessiontokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。步骤3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTPonly的cookie。当然,如上操作将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。3综论XSS攻击作为Web业务的最大威胁之一,不仅危害Web业务本身,对访问Web业务的用户也会带来直接的影响,如何防范和阻止XSS攻击,保障Web站点的业务安全,是定位于业务威胁防御的入侵防御产品的本职工作。JAVA怎样过滤危险字符(正则表达式)publicclassCheckstr{publicCheckstr(){}publicStringdostring(Stringstr){str=str.replaceAll("&","&");str=str.replaceAll("<","<");str=str.replaceAll(">",">");str=str.replaceAll("'","");str=str.replaceAll(";","");str=str.replaceAll("--","");str=str.replaceAll("/","");str=str.replaceAll("%","");returnstr;}}jsp过滤非法字符输入防止XSS跨站攻击代码如下:packagecom.liufeng.sys.filter;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassIllegalCharacterFilterimplementsFilter{privateString[]characterParams=null;privatebooleanOK=true;publicvoiddestroy(){//TODOAuto-generatedmethodstub}/***此程序块主要用来解决参数带非法字符等过滤功能*/publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainarg2)throwsIOException,ServletException{HttpServletRequestservletrequest=(HttpServletRequest)request;HttpServletResponseservletresponse=(HttpServletResponse)response;booleanstatus=false;java.util.Enumerationparams=request.getParameterNames();Stringparam="";StringparamValue="";servletresponse.setContentType("text/html");servletresponse.setCharacterEncoding("utf-8");while(params.hasMoreElements()){param=(String)params.nextElement();String[]values=request.getParameterValues(param);paramValue="";if(OK){//过滤字符串为0个时不对字符过滤for(inti=0;i<values.length;i++)paramValue=paramValue+values[i];for(inti=0;i<characterParams.length;i++)if(paramValue.indexOf(characterParams[i])>=0){status=true;break;}if(status)break;}}//System.out.println(param+"="+paramValue+";");if(status){PrintWriterout=servletresponse.getWriter();out.print("<scriptlanguage='javascript'>alert(\"对不起!您输入内容含有非法字符。如:\\\"'\\\".等\");"//+servletrequest.getRequestURL()+"window.history.go(-1);</script>");}elsearg2.doFilter(request,response);}publicvoidinit(FilterConfigconfig)throwsServletException{if(config.getInitParameter("characterParams").length()<1)OK=false;elsethis.characterParams=config.getInitParameter("characterParams").split(",");}}二。在web.xml文件中加入如下内容:<!--非法字符过滤器--><filter><filter-name>IllegalCharacterFilter</filter-name><filter-class>com.liufeng.sys.filter.IllegalCharacterFilter</filter-class><init-param><param-name>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年产xxx特种合金项目可行性研究报告(立项说明)
- 年产xx博古架项目可行性研究报告(可行性分析)
- 关于医疗护理的英文
- 护理儿科营养不良
- 招投标法律培训课件
- 一年级上册数学教案-6.3 10加几、十几加几及相应的减法 -人教版
- 二年级下册小学数学教案 九、收集数 北京版
- 审计个人未来规划
- 科研机构创新感知监测元数据-征求意见稿-编制说明
- 智力障碍教育考试题库单选题100道及答案解析
- 走向2024年的中欧经贸合作发展与挑战
- 医院患者人文关怀管理制度
- 人教版小学三年级道德与法治上册《第四单元 家是最温暖的地方》大单元整体教学设计
- 第9章-行政机关的其他行为
- GB/T 44260-2024虚拟电厂资源配置与评估技术规范
- 口腔科无菌操作课件
- 休克与血流动力学监测课件
- 环保公司风险分析及防范措施
- 中国食物成分表2018年(标准版)第6版
- 中国心力衰竭诊断和治疗指南2024解读
- 浙江省五校联盟2023-2024学年高三下学期3月联考英语试题(解析版)
评论
0/150
提交评论