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

2019-10-30  本文已影响0人  codingQi

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是一个不需要输入的验证码。

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

上一篇 下一篇

猜你喜欢

热点阅读