2015-09-25 74 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