【问题标题】:Is this method of applying content security policy ok?这种应用内容安全策略的方法可以吗?
【发布时间】:2018-08-28 10:32:19
【问题描述】:

我正在尝试将 CSP 添加到我的 Web 应用程序中,我在我的索引页面中添加了以下元标记:

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

还有以下我在 IIS 上的 web.config 文件:

<customHeaders>
     <add name="Content-Security-Policy" value="default-src 'self' 'unsafe-inline' http://*.domain.com;
                                                img-src 'self' http://*.domain.com data:"  />

      </customHeaders>

是否需要同时添加元标记和附加标头?还是其中之一就足够了?

元标记策略是否会覆盖自定义标头?

script-src 'self' http://* 'unsafe-inline' 'unsafe-eval' 是否意味着我可以编写内联JavaScript 并在我的代码中使用eval 函数?此规则是否会覆盖标头设置的策略? (因为据我所知,我在标题中禁止使用内联 JavaScript 和 eval 函数)

我的最后一个问题是,如果我使用这些设置,我应该在我的 html 中使用 ng-csp 还是它的其他变体 ng-csp="no-unsafe-eval"

【问题讨论】:

  • 如果此实现是为了修复 Veracode 中突出显示的缺陷,而您仍然继续 'unsafe-inline' 'unsafe-eval' 将无法解决问题。

标签: html angularjs security xss content-security-policy


【解决方案1】:

是否需要同时添加元标记和附加标头?还是其中之一就足够了?

一个就足够了。如果您可以让您的服务器在响应标头中发送策略,那就更好了。您也不需要在 meta 元素中指定任何内容,这样做没有任何好处。

元标记策略是否会覆盖自定义标头?

如果meta 政策更严格,meta 政策只会覆盖标头政策。看到这个答案:

What is happening when I have two CSP (Content Security Policies) policies - header & meta?

...它引用了 CSP 的一部分说,“将其他策略添加到要强制执行的策略列表中只会进一步限制受保护资源的功能”

script-src 'self' http://* 'unsafe-inline' 'unsafe-eval' 是否意味着我可以编写内联JavaScript 并在我的代码中使用eval 函数?

如果您的标头还为script-src 指定了这些值,它会这样做。但是您的标头策略没有。所以浏览器使用最严格的策略,不管它在哪里被指定。

此规则是否会覆盖标头设置的策略? (因为据我所知,我在标题中禁止使用内联 JavaScript 和 eval 函数)

不,正如 What is happening when I have two CSP (Content Security Policies) policies - header & meta? 答案所解释的,您不能通过在其他地方指定不太严格的策略来覆盖严格的策略。

因此,您最好只在一个地方的标题中指定所有策略值(而不是 meta)。

【讨论】:

    猜你喜欢
    • 2019-12-27
    • 2017-09-07
    • 2016-06-22
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    相关资源
    最近更新 更多