2015-09-25 76 views
7

所以我为我的web应用程序实现了CSP,并且它在Chrome中运行得非常好。执行所有内联脚本nonce;没有它的人不会执行。Safari忽略的CSP随机数

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

的内容安全策略的指令“脚本src”中的源列表 包含无效来源: '现时-fbe23fb21d40c38e8df7c0a16357dd3ec4be86ca233cb41206ac5f897cf9a103' ”。 它会被忽略。

页眉:

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

内嵌脚本没有被执行,即使现时的人。

回答

8

Safari尚未支持随机文件(请警告本地webkit代表支持此操作),但Firefox和Chrome已经实现了向后兼容的标准行为。即,如果存在随机数,则忽略'unsafe-inline'

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

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

+0

,如果我在的角应用程序中使用这样的CSP(不允许不安全的内联),将它让角事件,如NG单击工作? –

+0

我不知道,但如果ng-click不能用于CSP,那是ng-click的问题,而不是CSP。 – oreoshake

+1

值得指出的是,应尽可能避免不安全内联,因为它首先违背了使用CSP的目的。 – nucc1