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,但不影响其加载网页。

07-30 13:18