2017-06-17 79 views
1

我正在努力保持我的CSP策略尽可能严格。我需要将3D派对组件包含在我的包中。但它使用打破CSP的方法element.setAttribute('style'...)。有没有办法让这个特定的脚本以这种方式内联样式?如何让脚本在不制动的情况下使用setAttribute'style'CSP

+0

你可以自己清理它,使用正则表达式检查脚本元素等 – Dummy

+0

我可以用这种方式解决它,但我恐怕要冻结一个3d派对组件。将来无法更新它。我仍然希望有可能用'nonce'属性或类似的东西解决它。 – maxvektor

+1

谷歌reCAPTCHA是这样做的一个常见来源。在https://stackoverflow.com/questions/44512798/content-security-policy-header-directive-for-google-re-captcha/44513663#44513663上查看相关答案 – sideshowbarker

回答

1

允许style属性的唯一方法是使用unsafe-inlinestyle属性是来自不同来源还是来自self--它们仍然会被视为CSP违规并不重要,除非您有unsafe-inline

具体地,一个解决方案,不会为style属性工作是使用一个CSP的随机数或散列的,因为随机数和散列使用仅用于stylescript元件定义;该规范有一个Hash usage for style elements部分,明确省略了定义散列使用风格属性

因此,即使在您的政策中为style属性的内容指定了正确的哈希值,您的浏览器仍然会将其视为违规。

底线是,由于unsafe-inline是允许的唯一途径style属性,但使用unsafe-inline几乎完全违背了任何CSP政策开始,在从CSP认为,只有安全的解决方案的目的只是为了永远使用style属性 - 既不直接来自您自己的标记/代码,也不通过任何第三方代码。

相关问题