Заголовок 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