为什么Firefox不总是为POST请求发送HTTP Origin头?

时间:2015-03-13 14:26:50

标签: http firefox

我正在https://www.drupal.org/node/1803712

探索将HTTP Origin检查作为Drupal的CSRF保护的想法

现在我正在测试Origin标头如何通过POST请求到达,但Firefox不会在用户登录表单提交上发送Origin标头。 Chromium和Chrome工作正常,他们发送Origin标题。

Firefox版本为36.0.1。我还测试了一个干净的Firefox安装,因为我想也许我的一些浏览器插件会抑制Origin标头,但没有运气 - 也没有Origin标头。

是否有描述Firefox何时发送Origin标头的文档页面?

2 个答案:

答案 0 :(得分:6)

尚未实施。这里有一个讨论:https://bugzilla.mozilla.org/show_bug.cgi?id=446344

答案 1 :(得分:1)

Firefox上的默认设置是不发送HTTP_ORIGIN。

原因是如果启用了network.http.sendOriginHeader配置变量(可通过about:config访问),导致某些移动Firefox版本挂起的错误。 (有关详细信息,请参阅https://developer.mozilla.org/en-US/Firefox/Experimental_features#Security以及Marco的评论https://bugzilla.mozilla.org/show_bug.cgi?id=446344提供的链接。)

默认情况下,有一项建议启用FF发送HTTP_ORIGIN,但TODO列表很长(请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=1424076)。 因此,即使没有启用CSRF的Javascript代码,FF也可能需要数年时间才会发送HTTP_ORIGIN。

默认情况下,一些FOSS操作系统预先配置其FF端口以发送HTTP_ORIGIN。 顺便说一下,如果没有使用Javascript明确启用CSRF,MS Edge也不会发送HTTP_ORIGIN。

出于这个原因,我实现了我的网站的安全设置,使用户能够禁止来自不提供HTTP_ORIGIN的浏览器的POST事务。