内容安全策略在桌面上按预期工作,但不在移动设备上

时间:2018-05-05 03:33:10

标签: mobile-safari content-security-policy

在一个网站上拥有内容安全策略是在一个网站上提供额外安全层的好方法。

我有一个内容安全策略在桌面上按预期工作,但它在移动设备上破坏了网站(safari)。内容安全策略位于元标记内。我正在使用随机数和哈希值。在移动设备上,我收到错误,指出它拒绝执行内联脚本,因为它违反了包含哈希值和随机数的内容安全策略指令。该错误还表明我需要在代码中使用哈希或随机数来执行代码,但它们已经存在于那里,这就是它在桌面上运行良好的方式。问题是在移动设备上它的行为就好像哈希和随机数不存在一样。任何提示都表示赞赏。

1 个答案:

答案 0 :(得分:2)

在CSP中,如果您为script-srcstyle-src添加了一个nonce,如果浏览器理解nonce ,{em>将忽略。因此,为了与不了解CSP2的旧版浏览器(例如,iOS 9及更早版本的Safari)兼容,请同时包含你的nonce和unsafe-inline

较新的浏览器将遵循现时并忽略unsafe-inline。较旧的浏览器无法理解现时符号,因此会回退到unsafe-inline

请参阅https://csp.withgoogle.com/docs/strict-csp.html

  

script-src nonce- {random}'unsafe-inline'

     

nonce指令意味着只有当元素包含与策略中出现的随机生成的值匹配的nonce属性时才允许执行元素。

     

注意:在存在CSP nonce的情况下,现代浏览器将忽略unsafe-inline指令。较旧的浏览器不支持nonce,会看到unsafe-inline并允许内联脚本执行。