【问题标题】:CSP nonce ignored by SafariSafari 忽略 CSP 随机数
【发布时间】:2015-12-23 15:36:58
【问题描述】:

所以我为我的网络应用程序实现了 CSP,它在 Chrome 中运行良好。所有带有nonce 的内联脚本都会被执行;没有它的不会被执行。

然而,在 Safari 中,这是我在控制台中看到的消息:

内容安全策略指令“script-src”的源列表 包含无效来源: ''nonce-fbe23fb21d40c38e8df7c0a16357dd3ec4be86ca233cb41206ac5f897cf9a103''。 它将被忽略。

标题:

Content-Security-Policy script-src 'nonce-cb28e5c8a2b833169bb8d1fa686f659fed9b3bf8ea52b86916bcaf20a04b3209' 'self'

没有执行任何内联脚本,即使是带有 nonce 的脚本。

【问题讨论】:

    标签: safari content-security-policy


    【解决方案1】:

    Safari 尚不支持 nonces(请让您当地的 webkit 代表支持此功能),但 Firefox 和 Chrome 已经实现了向后兼容的标准行为。也就是说,如果存在随机数,则忽略 'unsafe-inline'

    同时发送'unsafe-inline' 和你的nonce,你就会得到想要的行为。 Safari 会抱怨“未知来源值”,但它会按预期工作。

    http://www.w3.org/TR/CSP2/#directive-script-src

    【讨论】:

    • 我不知道,但如果 ng-click 不适用于 CSP,那是 ng-click 的问题,而不是 CSP。
    • 值得指出的是,应该尽可能避免使用 unsafe-inline,因为它首先违背了使用 CSP 的目的。
    • @nucc1 如果你使用它没有随机数,它会这样做,但标准说如果你的 script-src 中有随机数或散列,则忽略'unsafe-inline',所以在这种情况下没关系。
    猜你喜欢
    • 2020-01-09
    • 2016-06-13
    • 2010-12-23
    • 1970-01-01
    • 2020-12-01
    • 2013-10-11
    • 2018-07-05
    • 2013-06-22
    相关资源
    最近更新 更多