【问题标题】:Where should you configure Content Security Policy?您应该在哪里配置内容安全策略?
【发布时间】:2017-07-15 14:35:48
【问题描述】:

我有一个 Angular 应用程序,它根据设置与 Tomcat 上的 REST API 或 Jetty 上的 REST API 进行通信。 angular-app 本身与战争一样托管在同一个 tomcat/jetty 上。

Tomcat 设置前面可能有一个 Apache(取决于客户端)

应用程序需要使用 base64 图像(通过 css 加载),但现在,如果它托管在服务器上,我会收到以下错误:

Refused to load the image 'data:image/png;base64,...' because it violates the following Content Security Policy directive: "default-src https:". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.

所以我做了什么: 在 index.html 中,我设置了:

<meta http-equiv="Content-Security-Policy"
      content="default-src https: http:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https: http:; style-src http: https: 'unsafe-inline'; img-src 'self' data: https:; connect-src http: https: ws:;">

在手动 Spring 过滤器中,我设置了:

httpServletResponse.setHeader("Content-Security-Policy",
                                  "default-src https: http:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https: http:; style-src http: https: 'unsafe-inline'; img-src 'self' data: https:; connect-src http: https: ws:;");

当然,这没有任何效果,因为我没有调用 html/js/css 的 API。

据我了解,这并不意味着要在 Tomcat 上进行配置。 您通常在哪里配置 Content Security Policy / Content-Security-Policy 标头?

我需要一个不需要在将安装文件的服务器上手动配置的解决方案。

提前致谢!

【问题讨论】:

  • 你是怎么解决的?我知道这是一篇旧帖子,但我遇到了类似的问题,所以想检查一下。
  • 我们的 tomcat 前面有一个 nginx 或 apache 服务器(不记得了),它指向 tomcat 或静态文件。我们将 cors 配置添加到该服务器。还需要元标记。

标签: java angularjs spring tomcat content-security-policy


【解决方案1】:

Spring Security 允许用户轻松注入安全标头以帮助保护他们的应用程序。这是内容安全策略的Spring Security Reference Document。需要注意的是 Spring Security 默认不添加 Content Security Policy。 Web 应用程序作者必须声明安全策略以强制和/或监视受保护的资源。您可以使用 Java 配置启用 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/");
}
}

【讨论】:

  • 问题是,角度应用程序不在弹簧上下文中。它是一个带有 grunt 的 WAR 构建,并且只包含 js/css/html 文件。 REST-API 没问题...
猜你喜欢
  • 2018-07-04
  • 2014-01-29
  • 2019-04-06
  • 2019-05-25
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多