美文网首页
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