Почему Firefox не всегда отправляет заголовок HTTP Origin для запросов POST?

Я изучаю идею HTTP Origin, проверяя, как защита CSRF для Drupal на https://www.drupal.org/node/1803712

Теперь я тестировал, как заголовок Origin поступает с запросом POST, но Firefox не отправляет заголовок Origin при представлении формы входа пользователя. Хром и Chrome работают нормально, они отправляют заголовок Origin.

Версия Firefox - 36.0.1. Я также тестировал чистую установку Firefox, потому что я думал, что некоторые из моих плагинов браузера подавляют заголовок Origin, но не удастся - там тоже заголовок Origin.

Есть ли страница документации, которая описывает, когда Firefox отправляет заголовок Origin, а когда нет?

Ответ 2

По умолчанию в Firefox не отправляется HTTP_ORIGIN.

Причина заключается в ошибке, которая приводит к зависанию некоторых мобильных версий Firefox, если включена переменная конфигурации network.http.sendOriginHeader (доступная через about:config). (Подробнее см. https://developer.mozilla.org/en-US/Firefox/Experimental_features#Security и ссылку, предоставленную комментарием Марко https://bugzilla.mozilla.org/show_bug.cgi?id=446344.)

Есть предложение включить FF отправку HTTP_ORIGIN по умолчанию, но список TODO длинный (см. https://bugzilla.mozilla.org/show_bug.cgi?id=1424076). Так что, вероятно, потребуются годы, прежде чем FF отправит HTTP_ORIGIN, даже если код Javascript не включит CSRF.

Некоторые ОС FOSS предварительно конфигурируют свои порты FF для отправки HTTP_ORIGIN по умолчанию. Кстати, MS Edge также не отправляет HTTP_ORIGIN без явного включения CSRF с использованием Javascript.

По этой причине я реализовал настройку безопасности моего сайта, которая позволяет пользователям запрещать транзакции POST из браузеров, которые не предоставляют HTTP_ORIGIN.