【问题标题】:It is possible to override/remove page Content Security Policy through the external script?是否可以通过外部脚本覆盖/删除页面内容安全策略?
【发布时间】:2019-05-19 15:34:34
【问题描述】:

我正在为单个网页编写一个外部脚本,我需要通过此脚本向另一个资源发出 POST JSON 请求。

但是,当我这样做时,它会引发 CSP 错误:"Refused to connect to <URL> because it violates the following Content Security Policy directive: "connect-src 'self'"。

我查看了网页并看到包含 CSP 内容的 Content-Security-Policy 的元标记。但是,我尝试手动将我的 <URL> 添加到 CSP connect-src 内容,但它仍然无法正常工作。

问题:

  • 我可以通过外部脚本更改 CSP 吗?如何?
  • 可能有任何解决方法?

【问题讨论】:

    标签: javascript html security http-headers content-security-policy


    【解决方案1】:

    错误消息是说需要更改的设置:

    它违反了以下Content Security Policy directive: "connect-src 'self'"

    所以你需要将'connect-src'指令设置为'self'以外的东西,这可能是默认设置的。

    您说您尝试添加您尝试连接的 URL。这不太正确 - 您只需添加主机部分,而不是任何路径。

    所以 CSP 标头的 connect-src 部分应如下所示:

    connect-src 'self' https://*.example.com
    

    如果您用您尝试过的方法更新您的问题,如果仍然无法正常工作,则可以诊断出确切的错误。

    【讨论】:

    • 这不是我的资源,我无法控制它 CSP。 >元标记不设置 CSP....它只是标题。那么存在 CSP 元标记的目的是什么? developers.google.com/web/fundamentals/security/csp/…developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
    • 我不知道可以在元标记中设置它们 - 我已经从我的答案中删除了这个错误。
    • 没关系!我们一生都在学习新东西。并且看起来对 CSP 元标记的任何更改都不起作用,因为浏览器仅使用由服务器发送的 CSP 元标记的第一个版本。这是有道理的,因为我们可以通过 JS 更改这些标签,那将是一个巨大的安全漏洞。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多