Невозможно прочитать файл cookie xsrf-token в angular js 1.5.5

Чтобы защитить приложение от CSRF-атаки, мы устанавливаем cookie с именем XSRF-ТОКЕН со стороны сервера. Таким образом, из кода на стороне клиента мы можем установить cookie и отправить его на сервер, но для проверки CSRF на стороне сервера нам нужно отправить заголовок при запуске вызова службы POST. Согласно угловому документу, $ http автоматически устанавливает заголовок X-XSRF-TOKEN, читая cookie (см. ссылка на сайт), но код Javascript не может прочитать cookie, хотя мы развернули наше приложение в том же домене. Код создания файлов cookie на стороне сервера и подробные сведения о развертывании службы приведены ниже.

final Cookie newCookie = new Cookie(
"XSRF-TOKEN",
csrfValue);
newCookie.setPath("/");
httpResponse.addCookie(newCookie);

Пользовательский интерфейс развернут на порту 8080, а служба развернута на порту 8084 внутри той же виртуальной машины.

0
0
237
1

Ответы 1

Порт 8080 и 8084 имеют разное происхождение, поэтому вы не можете читать файлы cookie друг с друга, так же как вы не можете получить доступ к файлам cookie любого другого веб-сайта в javascript, запущенном на вашем.

Как сервис аутентифицирует пользователя? Если он основан на токене, и токен отправляется в виде заголовка запроса, вам даже не нужна дополнительная защита от csrf.

Мы используем keycloak в качестве механизма аутентификации, поэтому keycloak использует концепцию аутентификации на основе токенов Oauth. Защита CSRF необходима для остановки межсайтовых запросов. Поскольку он подпадает под одну из уязвимостей OWASP, он был поднят в рамках тестирования VAPT, которое мы проводим через стороннего клиента для получения сертификата. Теперь вы правы, поскольку наше приложение размещено на другом порту, поэтому проверка домена не выполняется. В фоновом режиме мы используем обратный прокси для надежных хостов. Настройте обратный прокси-сервер, чтобы решить эту проблему, или нам нужно сделать больше, чтобы решить эту проблему.

Sayan 12.04.2018 07:25

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