Я поддерживаю веб-приложение (содержит интерфейсный портал Angular JS и приложение внутреннего сервера на основе Java). Версия Angular - 1.2.9 (была разработана другой группой).
В настоящее время приложение имеет уязвимость для атаки подделки межсайтовых запросов (обнаруживается с помощью инструмента анализа безопасности). Я пытаюсь использовать библиотеку «CSRF Guard» (версия 3.0) для устранения уязвимости, однако я не могу заставить ее работать.
Изначально я надеялся, что интегрировать «CSRF Guard» будет безболезненнос этим приложением, но это кажется немного сложнее, чем я ожидал.
После добавления «CSRF Guard», когда я пытаюсь выполнить команду POST, которая имеет уязвимость, я вижу следующее в журналах:
APPLICATION_NAME |[Ср. 16 октября 11:19:07 UTC 2019] [Ошибка] предотвращение потенциальной атаки подделки межсайтовых запросов (CSRF) (USERNAME, ip: 172.16.0.1, метод:% request_method%, uri: / APPLICATION_PATH1 / PATH2, ошибка:требуемый токен отсутствует в запросе)
Итак, похоже, что токен CSRF Guard не включен в запрос. Я настроил файл web.xml на основе инструкций:
https://www.owasp.org/index.php/CSRFGuard_3_Installation https://www.owasp.org/index.php/CSRFGuard_3_Token_Injection
Мой вопрос: какие изменения кода необходимо выполнить в приложении (или в HTML, или в JavaScript), чтобы убедиться, что токен включен в запрос.
Я видел, что кто-то предложил (в Как установить токен CSRF на угловой странице - OWASP CSRFGuard 3.0 ), чтометод app.config должен выглядеть следующим образом:
var app = angular.module('myapp', []);
app.config(function($httpProvider) {
$httpProvider.defaults.xsrfCookieName = 'XSRF-TOKEN';
$httpProvider.defaults.xsrfHeaderName = 'X-XSRF-TOKEN';
});
В настоящее время наш метод app.config имеет следующую подпись:
app.config(function($routeProvider) {
Должен ли я добавить $ httpProvider в качестве дополнительного аргументав этот метод?