使用Tomcat v9.0.30,我能够使用内置Tomcat过滤器HttpHeaderSecurityFilter https://tomcat.apache.org/tomcat-9.0-doc/config/filter.html成功地为基于Spring的应用程序配置所有响应的HSTS报头(当通过HTTPS服务时)。
但是,我注意到头不是为400 HttpStatus的特定响应添加的。下面是一些截图:
这个问题似乎是针对400个错误,特别是当使用rfc 7230和rfc 3986的不符合规定的字符时:“[
我知道Tomcatv9.x.x出于安全原因默认拒绝这些字符,并且可以使用relaxedPathChars和relaxedQueryChars属性,但是400个错误响应呢?
为什么在这种情况下没有添加HSTS报头,是否有解决办法(为400响应添加报头)?如果应该将HttpHeaderSecurityFilter应用于所有响应,是否应该将其报告为Tomcat上的一个bug?
发布于 2022-10-26 16:07:52
将relaxedPathChars='[]'
添加到server.xml
中的Connector
元素中,在Tomcat 9.0.65上为我修正了这个问题。
最后,我使用了以下配置来允许更多字符(以满足安全扫描):server.xml
-> Connector
->
relaxedPathChars='[]|' relaxedQueryChars='[]|{}^\`"<>'
并设置以下开始选项(允许[encoded]
反斜杠而不中断HSTS标头):
-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true
https://stackoverflow.com/questions/70865338
复制相似问题