Комментарии 9
Вместо непосредственного выполнения нашего запроса POST, который потенциально может вызвать серьезные проблемы на сервере, браузер отправил запрос «предварительной проверки». Это не что иное, как запрос OPTIONS к серверу с просьбой проверить, разрешено ли наше происхождение. В этом случае сервер не ответил положительно, поэтому браузер останавливает процесс, и наш запрос POST никогда не достигает цели.
Поделитесь, пожалуйста, опытом кто как решал проблему, чтоб сервер ответил положительно на «проверочный» запрос OPTIONS, и чтобы потом все последующие кроссдоменные POST-ы уходили нормально. При этом запросы «сложные», т.е. Content-type: 'application/json'.
Спасибо.
конкретный рецепт зависит от вашего сервера
P.S. Хотя вроде для себя любимых аналог HPKP в Хроме сделали.
HPKP плохо уживается в корпоративном сегменте, где безопасники склонны контролировать весь трафик и для этого пересобирают его, используя свои сертификаты.
Да и решением для корпоративного сектора мог бы стать механизм «сертифицированного MITM». Смысл в том, что в браузер устанавливается специальный сертификат фирмы, который так и помечается (он может быть только один). И дальше следует разрешение на MITM с этим сертификатом (плюс пользователю показывают предупреждение, что трафик мол просматривается твоей организацией). И всё хорошо.
У firefox есть настройка 'security.enterprise_roots.enabled', которая по сути это и делает. В Chrome фактически этот режим по умолчанию и чтобы совсем не заморачиваться, запрятали данные о сертификате подальше от пользовательских глаз долой.
Весь смысл HPKP избавиться от возможности злоупотребления со стороны CA. Т.к. после первого посещения сайта строиться цепь доверия (хотя схема и не такая как у блокчейна, но сути это не меняет). И даже если CA издаст левый сертификат (а это весьма вероятно, учитывая что у нас все CA могут издавать сертификаты ко всем сайтам) то такой сертификат будет послан нафиг, т.к. его хеш отсутствует в этой цепочке доверия.
P.S. Опять же где-то слышал что в Хроме зашита защита от выдачи сертификатов на домены Гугла от левых CA (т.е. себя они защищают, т.к. прекрасно всё понимают).
Просто сам подход хоть и выглядит простым, создает больше проблем. Нет ни чего постоянного. Люди ошибаются, сертификаты устаревают, их отзывают, перевыпускают, доверие появляется и теряется — такова реальность. Да и пользователям по правде важнее удобство, чем абстрактная безопасность. Если вдруг перестает работать сайт, а проблема решается лишь обновлением браузера это нонсенс. Для тех кому все это действительнт нужно, в браузерах есть поддержка относительно безопасных схем типа pkcs#11, хотя физическими токенами пользоваться и не так удобно.
Как усилить защищенность веб-приложений при помощи HTTP заголовков