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

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

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

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

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

2 ответа

Это еще не реализовано. Здесь есть обсуждение: https://bugzilla.mozilla.org/show_bug.cgi?id=446344

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

Причиной является ошибка, приводящая к зависанию некоторых мобильных версий Firefox, если network.http.sendOriginHeader переменная конфигурации (доступна через about:config) включен. (Подробнее см. https://developer.mozilla.org/en-US/Firefox/Experimental_features и ссылку, предоставленную комментарием Марко 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.

Другие вопросы по тегам