美文网首页
web安全及防御 - CSRF跨站请求伪造

web安全及防御 - CSRF跨站请求伪造

作者: codingQi | 来源:发表于2019-10-30 15:40 被阅读0次

    CSRF(Cross-Site Request Forgery)是指跨站请求伪造,也常常被称为“One Click Attack”或者“Session Riding”,通常缩写为CSRF或是XSRF。

    与XSS跨站脚本攻击相比,两者攻击方式完全不同,虽然CSRF攻击不太流行,但却更加难以防范,所以被认为CSRF比XSS更具危险性,CSRF在业内具有“苏醒的巨人”的称号。

    可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义进行某些非法操作。CSRF能够使用你的账户发送邮件,获取你的敏感信息,甚至盗走你的财产。

    一、CSRF攻击原理

    比如:

    (1)你正在访问一个银行的网站,且已经登录,相当于,你已经和这个网站建立了会话;
    (2)这时,你的朋友,或者网友(hacker),发来了一条链接(是这个网站转帐时请求的链接),而且与你所登录的是同一家网络银行,你可能认为这个网站是安全的,然而当你打开这个url后,你账户中的余额可能会全部丢失。
    (3)因为你的浏览器正处于与此网站的会话之中,那么任何操作都是合法的,因此,就可以成功转账。
    正常的转账,会发送如下请求:http://www.secbug.org/pay.jsp?user=xxser&money=1000.
    攻击者操作,则会将此url改为:http://www.secbug.org/pay.jsp?user=hack&money=10000.
    (4)然后发给你,点击后,其实是你自己亲手造成的,并不是有人破解了你的账户密码或者是银行Web服务器被入侵导致的。

    以上表明两个重点:

    (1)CSRF的攻击建立在浏览器与Web服务器的会话中;
    (2)欺骗用户访问URL。

    二、CSRF攻击场景

    1. GET:

    蠕虫攻击,以金字塔的形式传播,速度非常快(实际中,XSS与CSRF通常是一起出现的)。

    2. POST

    也会发生攻击,只不过比get方式多了点代码。

    3. 浏览器Cookie机制

    访问同域下的页面时,无论时Session Cookie还是本地Cookie,Cookie都将被一起发送。
    访问不同域名下的页面时,各个浏览器的Cookie机制不同,有的则不会发送Cookie,就不会造成CSRF攻击;有的则会发送,则攻击就会成功。

    三、预防跨站请求伪造

    在预防CSRF攻击时,不像其他漏洞那样复杂,你只需要在关键部分增加一些小操作就可以防御CSRF攻击。

    1. 二次确认

    在调用某些功能时进行二次验证,如:删除用户时,产生一个对话框,提示“确定删除用户吗?”。转账操作时,要求用户输入二次密码。

    2. Token认证

    Token即标志、记号的意思,在IT领域也叫做令牌。

    CSRF攻击成功的两个要素:
    (1)攻击者可得知URL的所有参数项,并了解其含义;
    (2)诱导用户访问构造好的POC(意思应该是伪造的请求)。

    步骤:即使用验证码验证,Token是一个不需要输入的验证码。

    • 每当用户登录后会随机生成一段字符串,并且存储在session中。
    • 在敏感操作中加入隐藏标签,value即为Session中保存的字符串,如:
      <input type="hiden" name="token" value="3a8d9fx0s8v8" />,表单提交的时候就会带上token进行验证。
    • 如果为GET/POST请求,考虑使用在Cookie中存储Token,只要向服务器进行请求,那么一般都会带入Cookie,即可进行后面的验证。
    • 提交请求后,服务器端取出Session中的字符串与提交的Token对比,如果一致,则认为是正常请求,否则可能是CSRF攻击。
    • 更新Token值。

    有人认为:CSRF其实就是XSS攻击的一种“缩小版”。
    所以在防范CSRF时,首先要确定网站是否存在XSS漏洞,如果网站存在XSS漏洞,那么防范CSRF是没有任何意义的。

    相关文章

      网友评论

          本文标题:web安全及防御 - CSRF跨站请求伪造

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