Почему 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.