Lakyme Ответов: 3

Манипуляции заголовок укрепить


Fortify HP обнаружила уязвимость манипулирования заголовками в моем базовом CorsFilter:

HttpServletResponse response = (HttpServletResponse) res;
        String origin = ((HttpServletRequest)req).getHeader("origin");


и я получаю манипуляции с заголовком Здесь:
response.setHeader("Access-Control-Allow-Origin", origin);




Есть идеи?

Что я уже пробовал:

Я попробовал это сделать:
if (origin != null) {
            origin = origin.replace("\n", "");
            origin = origin.replace("\r", "");
        }


but the issue persists.

3 Ответов

Рейтинг:
2

Richard Deeming

Весь смысл CORS заключается в том, чтобы ограничить, какие сайты могут получить доступ к вашим ресурсам.
Совместное использование ресурсов между источниками (CORS) - HTTP | MDN[^]

Ваш код фактически говорит об этом какой-нибудь сайт может получить доступ к вашим ресурсам. Но уже есть способ сделать это, не полагаясь на заголовки, передаваемые от клиента:

response.setHeader("Access-Control-Allow-Origin", "*");
Access-Control-Allow-Origin - HTTP | MDN[^]

NB: Вы должны внимательно изучить последствия этого параметра для безопасности.


Lakyme

Мы разрешаем учетные данные, поэтому " * " - это не вариант :(

Рейтинг:
1

#realJSOP

Пометьте его как Это не проблема в укрепляйтесь и двигайтесь дальше


Рейтинг:
0

aljan

Имейте в виду, что, отражая "происхождение" в источнике Access-Control-Allow-Origin и используя учетные данные Access-Control-Allow, вы, по сути, разрешаете сторонним приложениям, посещаемым вашими пользователями, делать эти запросы и читать результаты. Если упомянутые результаты являются конфиденциальными, это вызывает беспокойство.

Это не совсем то, о чем Fortify действительно предупреждает вас, но вопрос, который следует рассмотреть, тем не менее.

Пожалуйста, обратитесь к Что такое CORS (cross-origin resource sharing)? Учебник &амп; примеры[^] , в разделе "генерируемый сервером заголовок ACAO из указанного клиентом исходного заголовка"