猿问

X-Requested-With标头有什么意义?

X-Requested-With标头有什么意义?

JQuery和其他框架添加以下标头:

X-Requested-With:XMLHttpRequest

为什么需要这个?为什么服务器要以不同于正常请求的方式处理AJAX请求?

更新:我刚刚使用这个标题找到了一个真实的例子:https//core.spreedly.com/manual/payment-methods/adding-with-js。如果在没有AJAX的情况下请求支付处理器,它会在完成后重定向回原始网站。当使用AJAX请求时,不会进行重定向。


慕姐8265434
浏览 667回答 3
3回答

湖上湖

安全性的一个很好的理由 - 这可以防止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的更深入的博客文章- 在这里。
随时随地看视频慕课网APP
我要回答