我们是否应该检查CSRF令牌以获取只读操作

时间:2016-08-29 04:58:36

标签: web csrf

我听说很多人建议CSRF处理对于执行写操作的操作是强制性的,但是对于执行只读操作的操作是可选的吗?

如果是,请举例说明如何使用CSRF利用仅执行只读操作的操作。

1 个答案:

答案 0 :(得分:1)

通常safe methods不必受CSRF保护,因为它们不会对应用程序进行更改(即,您在问题中声明它们是“只读”),即使它们返回敏感这些信息将受到浏览器中Same Origin Policy的保护。

如果您的网站是按照标准实施的,那么您的GET请求应该是安全的,因此不需要保护。

但是,有一个特定情况可能会执行“跨站点DoS” * 攻击。假设您的报告页面需要10秒钟才能执行,数据库服务器上的CPU使用率为100%,Web服务器上的CPU使用率为80%。

您网站的用户知道在办公时间内永远不会去https://yoursite.example.org/Analysis/GetReport,因为它会杀死服务器并给其他用户带来糟糕的用户体验。

但是,Chuck想让您的yoursite.example.org网站脱机,因为他不喜欢您或您的公司。

在公司员工经常访问的繁忙论坛上http://forum.walkertexasranger.example.com,他将签名设置为以下内容:

<img src="https://yoursite.example.org/Analysis/GetReport" width=0 height=0 />

每当员工读取Chuck的一个帖子时,身份验证cookie就会发送到https://yoursite.example.org/Analysis/GetReport,因此您的站点会处理请求并生成报告,并且系统会因为CPU被这些常量请求吃掉而脱机

因此,即使请求是GET请求并且不对系统进行任何永久性更改(也称为“安全”/“只读”),实际上每次运行时都会关闭系统。因此,最好使用CSRF预防方法来保护它,并且可以实现为POST。

* XSDoS,或跨服务拒绝,如果服务,是我创造的短语,所以不要去谷歌搜索它。