我的Spring Boot应用程序(v1.4.2,带有undertow启动程序)目前正在为其所使用的每个资源设置Strict-Transport-Security标头,包括我的spring-web RestControllers中的API资源以及{{1中的静态资源}}。我发现的 仅 例外是/src/main/resources/static
。该文件缺少标题会触发我们的安全扫描发现,我想清除它们。
这是到目前为止我尝试过的:
/favicon.ico
禁用Spring的custom favicon handling 为HttpSecurity配置中的所有资源添加了explicit header handling:
spring.mvc.favicon.enabled=false
似乎不管我做什么,该资源产生的HTTP响应标头集与Spring Boot服务的其他所有资源都不同。例如,@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) {
http.headers()
.httpStrictTransportSecurity()
.requestMatcher(request -> true);
}
}
中没有适用于我所有其他响应的缓存控制标头。
有趣的是,我发现,通过将MimeMapping添加到EmbeddedServletContainerCustomizer:
,此文件可以影响的头是Content-Type头(默认行为返回/favicon.ico
)。
Content-Type: application/octet-stream
答案 0 :(得分:1)
SpringBootWebSecurityConfiguration具有默认的忽略路径列表,这些默认路径已添加到servlet堆栈中的第一个安全过滤器之一:
import React from 'react';
import { Map, GoogleApiWrapper } from 'google-maps-react';
const mapStyles = {
width: '80vw',
height: '45vw',
marginLeft: 'auto',
marginRight: 'auto',
display: 'block'
};
const containerStyle = { {/* Added style */}
position: 'static'
}
const MapComponent = (props) => {
return (
<div className="MapComponent">
<div>
<a href="https://www.google.com/">Google</a>
</div>
<Map
google={props.google}
zoom={10}
style={mapStyles}
containerStyle={containerStyle} {/* Added prop */}
initialCenter={{
lat: 40,
lng: 12
}}
/>
<div>
<a href="https://www.google.com/">Google</a>
</div>
</div>
);
}
export default GoogleApiWrapper({
apiKey: "Key"
})(MapComponent);
您可以通过在SecurityProperties bean上设置“忽略”列表来覆盖此忽略路径列表。
private static List<String> DEFAULT_IGNORED = Arrays.asList(
"/css/**",
"/js/**",
"/images/**",
"/webjars/**",
"/**/favicon.ico");
将空列表或空列表传递到@Bean
public SecurityProperties securityProperties() {
SecurityProperties props = new SecurityProperties();
props.setIgnored(Arrays.asList("none"));
return props;
}
会产生默认行为,因此我添加了关键字“ none”以指示我不想忽略任何路径。 SpringBootWebSecurityConfiguration在构建“忽略”过滤器之前从列表中删除“无”。