我听说很多人建议CSRF处理对于执行写操作的操作是强制性的,但是对于执行只读操作的操作是可选的吗?
如果是,请举例说明如何使用CSRF利用仅执行只读操作的操作。
答案 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,或跨服务拒绝,如果服务,是我创造的短语,所以不要去谷歌搜索它。