【Web安全】XSS攻击

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sc_lilei/article/details/89292908

XSS攻击

    全称跨站脚本攻击(Cross Site Scripting),为了不跟层叠样式表(CSS)重名,所以叫XSS;

它是Web攻击中最常见的攻击手段之一!

危害

    攻击者在网站中嵌入恶意脚本(代码),当用户打开该网页时,脚本自动执行,它可以

  1. 盗取用户cookie、用户名密码
  2. 下载病毒木马
  3. 强行跳转页面
  4. 其他可怕的事。

原理

    假设页面上有个需要用户填写的表单,表单填好后的结果是:

<input type="text" name="nick" value="xiaomao">

nick就是用户输入的用户名,这是正常情况,但是当输入的是:
 

"/><script>alert("haha")</script><!-

这个时候,这一串就会被当做用户名提交到服务器,一般服务器会限制用户名长度或者字符类型,此时就会验证不通过。好了,这时服务器会让页面重定向到登录页面并带上刚才输入的用户名,因为输入框input的后面带上了一段脚本,所以浏览器会执行,这里的效果是会弹出一个提示框”haha“,并没有什么危害,危害程度完全取决与用户输入了什么。

  1. 如何盗取用户cookie、用户名密码?

         比如在一篇博客下,攻击者在评论区输入一段恶意的代码“评论”,代码的内容是包含CookieHelper.getCookie('xxx')这样的内容,那么别的用户访问这篇博客时,就会加载“评论”==执行恶意代码,攻击者可以在“评论”中通过jsonp跨域方式将cookie信息发送到自己的服务器进而获取其他用户的cookie信息,有些网站会将用户名密码直接保存cookie中,这样就泄露了账户信息,即使信息不是明文保存的,攻击者拿到其他用户cookie后也可以执行其他恶意操作,比如修改个人资料,攻击者可以在一个http请求中带上拿到的cookie,请求博客的修改个人资料的接口,是可以成功的。这样就对用户、网站造成了比较大的危害。

   2. 如何下载病毒木马?

          既然用户可以在网站上注入脚本,那么他就可以修改脚本内容,在脚本中去下载一个指定的病毒木马。通过类似原理,实现强制广告弹出,访问某网站等等都不是问题。

   3. 如何强行跳转页面?

          当注入js为“<script>window.location.href="www.bug.com"</script>”时,浏览器在访问当前页面时会强行跳转到www.bug.com这个站点,这个也叫做网站劫持。

防范

    XSS攻击的起源都是来自页面的输入,因此我们只需

         1. 在前端进行用户输入内容过滤,如电话号码,用户名可直接限制只能输入对应字符。

         2. 将用户输入的内容进行HTML转义存储,如尖括号,斜杠,单/双引号。

         3. 对于cookie劫持,我们可以为关键的cookie字段设置http-only,然后就无法通过document对象获取cookie,但不影响其加载网页。

展开阅读全文

XSS攻击升温Web业务安全面临挑战

10-14

 2008注定是不平凡的一年,在网络安全界也是一样。2008年初,SQL群注事件使得SQL注入重新成为网络安全界的一个关注焦点,机械化的注入工具出现,数以十万计的网站在数天内被攻击。SQL群注风暴硝烟未散,XSS(跨站脚本)攻击又提马杀到:6月25日,来自Darkreading.com的消息,Cenzic宣布,Yahoo Mail中存在XSS漏洞,同一天来自Theregister.com的消息,安全网站xssed.com称,“英国汇丰银行的多个网站上都存在跨站脚本漏洞,攻击者可以藉由这些跨站脚本漏洞,将访问这些合法银行网站的用户欺骗到其精心构建的网络钓鱼网站上,从而获取用户敏感的银行账户和密码信息。由于汇丰银行在修补网站漏洞方面动作缓慢,因此这些网站上存在的漏洞将在较长的时间内对网站用户的安全造成较大威胁”。rnrn  1.什么是XSS(跨站脚本)攻击?rnrn  XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在Web应用中的计算机安全漏洞,它允许恶意Web用户将代码植入到提供给其它用户使用的页面中,比如HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击”,而JavaScript是新型的“ShellCode”。rnrn  XSS攻击和前段时间甚嚣尘上的SQL注入攻击一样,都是由于Web业务的代码编写人员不严谨的字符限制而导致的:当某个站点允许用户提交java script脚本(这在Web2.0年代非常普遍),而又没有对这些脚本进行严格分析,就有可能存在XSS漏洞。这就决定了XSS漏洞的独特性:任何允许提交脚本的页面都可能存在XSS漏洞,而且这些漏洞可能各不相同。rnrn  2.如何防御XSS攻击?rnrn  业内对XSS漏洞的防御一般有两种方式。rnrn  第一种方式就是代码修改,对用户所有提交内容进行验证,包括URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其它的一律过滤。接下来就是实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。最后一步就是确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。rnrn  但这种方法将降低Web业务的交互能力,用户仅能提交少量指定的字符,不适应那些交互性要求较高的业务系统。而且Web业务的编码人员很少有受过正规的安全培训,即便是专业的安全公司,由于侧重点的不同,也很难完全避免XSS:2008年1月,xssed.com的一份报告指出McAfee、Symantec、VeriSign这三家安全公司的官方站点存在约30个XSS漏洞。rnrn  第二种方式就是部署专业的防御设备,目前较为流行的有入侵防御产品,利用的就是入侵防御产品对应用层攻击的检测防御能力。用户在选择相应的产品之前,最好先了解一下相关产品的XSS、SQL注入等Web威胁的检测方式,有一些入侵防御产品采用的还是传统的特征匹配方法,如对经典的XSS攻击:IMG SRC="javascript:alert(''XSS'');"来说,就是定义“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。这种模式匹配的方法缺点显而易见:通过编码或插入TAB键方式可以轻易躲避,而且还存在极大的误报可能,如"http://www.xxx.com/javascript/kkk.asp?id=2345"这样一个URL,由于包含了关键字“javascript”,也将会触发报警。rnrn  比较好的方式是选择那些基于攻击手法或者说基于攻击原理检测的入侵防御产品。启明星辰公司于近期发布天清入侵防御系统的新版本,没有采用传统的特征匹配方式,而是采用了行为特征分析方式,通过分析XSS所有可能的攻击手法,建立一个XSS攻击行为库来分析判断XSS攻击。采用了这种方法的入侵防御产品可以避免传统安全产品在XSS攻击检测上的漏报和误报,实现精确阻断,为面临XSS威胁的广大网络管理员提供一个很好的选择。rnrnrnrn rnrn rn 论坛

没有更多推荐了,返回首页