Spring 安全是否可以有不同的header().contentSecurityPolicy("...")
不同路由匹配器的设置?
我目前正在使用以下 spring 安全配置:
@Configuration
@EnableWebSecurity
public static class MyWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected final void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.csrf().disable()
.rememberMe().disable()
.headers()
.cacheControl().disable()
.referrerPolicy().and()
.contentSecurityPolicy("default-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; connect-src 'self'").
// followed by .authorizeRequests() section
chrome ( https://bugs.chromium.org/p/chromium/issues/detail?id=271452 ) 中存在一个错误或至少未指定的行为,如果资源使用具有严格 object-src 策略的 CSP-Header 提供,它会阻止浏览器显示 PDF 文档。
为了避免这种行为,我想提供不同的
contentSecurityPolicy()
不同路由匹配器的配置(在这种情况下,一个用于“../*.pdf”(或者更好的匹配响应内容类型的匹配器),另一个用于所有其他请求)。
最佳答案
此代码将为两个不同的 URL 创建两个安全过滤器。每个都有自己的内容安全策略:
@Configuration
@Order(1)
class PatterWebSecurityConfigurer : WebSecurityConfigurerAdapter() {
override fun configure(http: HttpSecurity) {
http
.antMatcher("/pattern")
.headers().contentSecurityPolicy("directives")
}
}
@Configuration
@Order(2)
class OtherPatternWebSecurityConfigurer : WebSecurityConfigurerAdapter() {
override fun configure(http: HttpSecurity) {
http
.antMatcher("/otherPattern")
.headers().contentSecurityPolicy("other directives")
}
}
关于spring-security - 通过路由配置 Spring Security headers(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44920687/