在我的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驱动器,点击这里下载
3条答案
按热度按时间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
zqry0prt2#
查看mvce,您似乎没有注册spring安全过滤器链。在web.xml中添加下面的内容,它应该都能工作。
dl5txlt93#
根据文档,您必须提供一个源url,以便用户代理阻止从scriptsrc指令中声明的源以外的其他源加载脚本的尝试。