美文网首页
CRSF攻击看这一篇就够了

CRSF攻击看这一篇就够了

作者: 阿福德 | 来源:发表于2019-02-13 11:44 被阅读0次

    什么是CRSF

    CSRF(Cross-site request forgery),中文名称:跨站请求伪造

    CSRF攻击原理解释

    当你登录一个网站A后,在没有登出的情况下,你又跑到一个其他的论坛上闲逛,然后你看到一个美女的图片,你出于好奇心,点击了美女图片,这个时候,可能就被攻击了;原因是美女图片的的超链接(link)可能是不法分子弄的,指向的可能是A网站,由于你在A网站还是登陆态,那么你点击的这个link就是以你登录态的进行的,比如可以用你的登录态发布评论;严重的可能进行转账。而你却浑然不知。

    比如图片的html代码是:

    <a href="http://www.a.com/addcomments?comment='XX是XX'"><img src='http://xx.com/beauty.jpg'/></a>
    

    就这样,由于看了一个美女,可能你就被卷入了一场官司,xx可能告你诽谤。

    攻击流程图

    CRSF攻击流程图

    攻击要点:

    1、用户在登录授信网站后并在没有登出的情况下访问了危险网站。
    2、授信网站对CRSF攻击没有做好防备。

    如果防止攻击

    1、要访问其他网站时,先登出你之前登录的网站(这条貌似不现实)
    2、不访问危险网站(这个也不惧操作性)
    3、授信网站做好CRSF攻击的防备,让攻击者无懈可击。(可以实现)

    防CRSF攻击的方法

    之前说了攻击者会精心构造一个请求,并引导你发送这个请求。如果我们让攻击者再怎么精心构造,也没法构造一个有效的请求,那么就可以达到我们的目的了。

    如果我们的服务每次都需要一个token, 访问的时候,服务端验证一个这个token是否合法,如果不合法,则拒绝访问,那么这样就达到了防crsf攻击的目的。
    具体做法:
    1、一般操作数据都使用表单,在表单增加一个隐藏域,在渲染表单时候,后台给一个token作为这个隐藏域的值。(token可以存在缓存中)
    2、提交表单时,将这个隐藏域一起提交
    3、后台验证请求中的token是否合法,不合法则拒绝。(token使用 完成后可以删除)。

    为什么写这篇文章

    今天看代码时,发现代码中也考虑了防crsf攻击,是其实是防不住的。
    我看到代码的主要问题是:token不是放在请求参数中,而是放在了cookie中,这样攻击的请求同样会带上这个token(浏览器会将cookie自动带上),就达不到防攻击的作用了。

    相关文章

      网友评论

          本文标题:CRSF攻击看这一篇就够了

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