[英]content security policy for navigation links
在我的项目中,我有后端(spring boot)和前端(angular)。 网络安全团队希望在每个页面的响应标头中包含 CSP header。
我已经在我所有经过身份验证或未经身份验证的端点上向他们提供了 CSP header,但他们也希望它出现在仅从前端呈现的导航链接上,例如“/登录”。
因此,我通过将 CSP 添加到 index.html 中,为他们提供了 CSP 作为元标记。 尽管如此,他们仍希望将其作为回应 header。
现在,我的问题
1:在后端交互的基础上不加载的页面上有CSP有多重要?
2:实现这一目标的最佳方法是什么?
3:因为我们的网络安全团队很坚定,我如何在这些页面上的响应 header 上添加 CSP?
按顺序回答你的问题:
还是有可能在不与后台通信的页面中发现XXS。 例如,如果攻击者可以在您的登录页面上执行任意 JavaScript,理论上他们可以使用它来窃取您的用户密码。 CSP 可以减轻这些攻击,因此应在此处使用。
你是说 CSP 元标签还是 header? 如果是这种情况,我希望它们位于 header 中。如果攻击者可以通过某种方式上传 HTML 文档并获得服务,理论上他们可以绕过 CSP。
这取决于您的网络服务器。 如果您使用 Spring Boot 来提供前端文件,您可以按照文档中所述使用 spring 安全性启用它:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
// ...
.headers(headers -> headers
.contentSecurityPolicy(csp -> csp
.policyDirectives("script-src 'self' https://trustedscripts.example.com; object-src https://trustedplugins.example.com; report-uri /csp-report-endpoint/")
)
);
return http.build();
}
}
其他网络服务器对此有其他配置,流行的是 apache 或 nginx。根据我的经验,通常有一个 spring 启动以外的网络服务器为前端文件提供服务。 如果您只在 spring 引导上提供 JSON REST-API,实际上没有必要在 spring 引导中设置 CSP。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.