Добавить в корзинуПозвонить
Найти в Дзене
Java

⚠️ Spring Boot: не включайте publish-request-params в production

В Spring Boot есть настройка: spring.mvc.publish-request-params=true Она включает логирование параметров HTTP-запросов. Это удобно в dev-среде, потому что можно видеть: • request headers • query parameters • form data Обычно это используют вместе с фильтром: @Bean public CommonsRequestLoggingFilter logFilter() { CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter(); filter.setIncludeQueryString(true); filter.setIncludeHeaders(true); filter.setIncludePayload(true); filter.setMaxPayloadLength(1000); filter.setAfterMessagePrefix("COMPLETE REQUEST: "); return filter; } Но есть важная проблема. В production такие логи могут случайно сохранить чувствительные данные пользователей. Например: POST /login { "username": "john", "password": "mypassword" } Если включено логирование payload, такие данные могут попасть в: • application logs • log-агрегаторы • мониторинг системы А это уже серьёзная уязвимость безопасности. Поэтому правило простое: - включайте publish-req

⚠️ Spring Boot: не включайте publish-request-params в production

В Spring Boot есть настройка:

spring.mvc.publish-request-params=true

Она включает логирование параметров HTTP-запросов.

Это удобно в dev-среде, потому что можно видеть:

• request headers

• query parameters

• form data

Обычно это используют вместе с фильтром:

@Bean

public CommonsRequestLoggingFilter logFilter() {

CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();

filter.setIncludeQueryString(true);

filter.setIncludeHeaders(true);

filter.setIncludePayload(true);

filter.setMaxPayloadLength(1000);

filter.setAfterMessagePrefix("COMPLETE REQUEST: ");

return filter;

}

Но есть важная проблема.

В production такие логи могут случайно сохранить чувствительные данные пользователей.

Например:

POST /login

{

"username": "john",

"password": "mypassword"

}

Если включено логирование payload, такие данные могут попасть в:

• application logs

• log-агрегаторы

• мониторинг системы

А это уже серьёзная уязвимость безопасности.

Поэтому правило простое:

- включайте publish-request-params только в dev

- никогда не логируйте request body в production

- маскируйте чувствительные поля (`password`, token, `authorization`)

Маленькая настройка -

но может привести к утечке данных.

#SpringBoot #Java #Backend #Security