【Web安全】XSS攻击

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、用户名密码?

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

       之所以作为读者的你访问这篇文章的时候没有弹出你的cookie,是因为csdn后台存储文章时将正文内容中的HTML字符如<>/单双引号等转义了,通过右键网页-检查元素-打开element标签,右键编辑HTML就可以查看转义后的字符,如下图

 在 https://tool.oschina.net/commons?type=2  查看需要HTML转义的字符列表。

 2. 如何下载病毒木马?

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

 3. 如何强行跳转页面?

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

4. 反射型XSS漏洞

          我在某帖子下留下一个链接:http://xxxx.com?display";alert("haha"),别人点击这个链接然后页面弹出haha。这就是反射,原理是一样的,而且这种类型的漏洞要求服务器会读取url中的参数并在页面展示这个参数,有一定的要求。通常攻击者会将js代码注入到url中,为防止过长被看出来会转成短链接对人造成一定的迷惑性。

防范

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

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

         2. 将用户输入的内容进行HTML转义存储,如尖括号,斜杠,单/双引号等,一般调用对应成熟的库。

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

你可能还想看:
          【Web安全】之CSRF 攻击 (最新解决方案)

          【Web安全】SQL注入攻击

          【Web安全】文件上传漏洞

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值