Заголовок HSTS с Tomcat 9 для 400 ошибок

Используя Tomcat v9.0.30, я смог успешно настроить заголовки HSTS для всех ответов (при обслуживании через HTTPS) для моего приложения на основе Spring, используя встроенный фильтр Tomcat HttpHeaderSecurityFilter https://tomcat.apache.org/tomcat-9.0-doc/config/filter.html

Однако я заметил, что заголовки не были добавлены для конкретного ответа с 400 HttpStatus. Ниже приведены некоторые скриншоты:

Проблема, по-видимому, связана с ошибкой 400 и особенно с использованием символов, не соответствующих rfc 7230 и rfc 3986: "["

Я знаю, что эти символы теперь по умолчанию отвергаются Tomcat v9.xx из соображений безопасности и что их можно разрешить с помощью свойств RelaxPathChars и RelaxQueryChars , но как насчет ответа об ошибке 400?

Почему заголовок HSTS не добавляется в этом случае и есть ли обходной путь (добавьте заголовки для ответа 400)? Следует ли сообщать об ошибке на Tomcat, если предполагается, что HttpHeaderSecurityFilter применяется ко всем ответам?

1 ответ

ДобавлениеrelaxedPathChars='[]'к элементу исправил это для меня на Tomcat 9.0.65.

В итоге я использовал следующую конфигурацию, чтобы разрешить еще больше символов (для проверки безопасности):server.xml->Connector->

      relaxedPathChars='[]|' relaxedQueryChars='[]|{}^\`"<>'

и установка следующего параметра запуска (чтобы разрешить[encoded]обратную косую черту без разрыва заголовка HSTS):

      -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true
Другие вопросы по тегам