扩展WebSecurityConfigureAdapter未添加csp头

ui7jx7zq  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(415)

在我的springmvc(5.0.3)应用程序中,我添加了一个类 SecurityConfig 延伸到 WebSecurityConfigurerAdapter 具体如下:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter 
{

    @Override
    protected void configure(HttpSecurity http) throws Exception 
    {
        http.headers().contentSecurityPolicy("script-src 'self'");
    }

}

我的期望是在浏览之后http://localhost:2020/webapp/i将在浏览器的开发人员控制台(网络选项卡)中看到csp标题。但是,响应头中没有添加任何与csp相关的内容。
我已经通过在测线处应用断点进行了检查 http.headers().contentSecurityPolicy("script-src 'self'"); 它在上下文加载时命中一次。
为什么响应中没有添加csp头呢?
更新:我甚至试过 http.headers() ,根据docs,此调用没有附加方法,将添加默认的安全标头。但在我的例子中,没有一个默认的安全头被添加。
根据要求,我已经上传了最小的,可复制的例子@google驱动器,点击这里下载

9wbgstp7

9wbgstp71#

您需要使用以下格式将contentsecuritypolicy添加到api调用中。您可以在这里进一步探索spring版本(5.0.3)https://docs.spring.io/spring-security/site/docs/5.0.3.release/reference/html/headers.html#headers-顾客服务提供商
spring(5.5.x)security默认情况下不添加内容安全策略,因为没有应用程序的上下文,不可能知道合理的默认值。web应用程序作者必须声明安全策略以强制和/或监视受保护的资源。参考14.2.8。在这里https://docs.spring.io/spring-security/site/docs/5.5.x/reference/html5/#servlet-标题csp

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        .headers()
        .contentSecurityPolicy("script-src 'self' https://trustedscripts.example.com; 
        object-src https://trustedplugins.example.com; report-uri /csp-report- 
        endpoint/");
    }
}
zqry0prt

zqry0prt2#

查看mvce,您似乎没有注册spring安全过滤器链。在web.xml中添加下面的内容,它应该都能工作。

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
dl5txlt9

dl5txlt93#

根据文档,您必须提供一个源url,以便用户代理阻止从scriptsrc指令中声明的源以外的其他源加载脚本的尝试。

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter 
{

    @Override
    protected void configure(HttpSecurity http) throws Exception 
    {
        http.headers().contentSecurityPolicy("script-src 'self' https://trustedscripts.example.com");
    }

}

相关问题