2017-06-17 43 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屬性 - 既不直接來自您自己的標記/代碼,也不通過任何第三方代碼。

相關問題