3 回答
TA贡献2003条经验 获得超2个赞
安全性的一个很好的理由 - 这可以防止CSRF攻击,因为未经服务器通过CORS同意,此标头无法添加到AJAX请求跨域。
跨域只允许以下标头:
接受
接受语言
内容语言
最后,事件ID
内容类型
任何其他人导致在CORS支持的浏览器中发出“飞行前”请求。
如果没有CORS,则无法添加X-Requested-With
跨域XHR请求。
如果服务器正在检查此标头是否存在,则它知道该请求未从攻击者的域尝试使用JavaScript代表该用户发出请求。这还会检查请求是否未从常规HTML表单发布,如果不使用令牌,则很难验证它是否为跨域。(但是,检查Origin
标题可能是支持的浏览器中的一个选项,但是您将使旧浏览器容易受到攻击。)
发现了新的Flash旁路
您可能希望将其与令牌结合使用,因为如果存在重定向步骤,则 OSX上的Safari上运行的Flash 可以设置此标头。它似乎也适用于Chrome,但现在已经过修复。此处有更多详细信息,包括受影
OWASP推荐将其与Origin和Referer检查相结合:
这种防御技术在跨站请求伪造的鲁棒防御部分4.3中有具体讨论。然而,早在2008年就已经记录了使用Flash的这种防御的绕过,并且最近在2015年由Mathias Karlsson在Vimeo中利用了CSRF漏洞。但是,我们认为Flash攻击无法欺骗Origin或Referer标头,因此通过检查它们,我们相信这种检查组合应该可以阻止Flash绕过CSRF攻击。(注意:如果有人可以确认或反驳这一信念,请告诉我们,以便我们更新此文章)
但是,由于已经讨论过的原因,检查Origin可能很棘手。
更新
写了一篇关于CORS,CSRF和X-Requested的更深入的博客文章- 在这里。
- 3 回答
- 0 关注
- 665 浏览
相关问题推荐
添加回答
举报