Content-Security-Policy: style-src-attr 指令

Baseline 已廣泛支援

此功能已成熟,可跨多個裝置和瀏覽器版本使用。自 2022 年 12 月起,所有瀏覽器均已提供此功能。

HTTP Content-Security-Policy (CSP) style-src-attr 指令指定了應用於單個 DOM 元素的內聯樣式的有效源。

此指令不設定 <style> 元素和帶有 rel="stylesheet"<link> 元素的有效源。這些源透過 style-src-elem 設定(所有樣式的有效源可以透過 style-src 設定)。

CSP 版本 3
指令型別 獲取指令
default-src 回退

是的。如果此指令不存在,使用者代理將查詢 style-src 指令;如果兩者都不存在,則回退到 default-src 指令。

語法

http
Content-Security-Policy: style-src-attr 'none';
Content-Security-Policy: style-src-attr <source-expression-list>;

此指令可以具有以下值之一

'none'

不允許載入此型別的任何資源。單引號是強制性的。

<source-expression-list>

一個由源表示式值組成的空格分隔列表。如果資源型別與任何給定的源表示式匹配,則可以載入此類資源。對於此指令,以下源表示式值適用:

style-src-attr 可以與 style-src 結合使用。

http
Content-Security-Policy: style-src <source>;
Content-Security-Policy: style-src-attr <source>;

示例

違規情況

給定此 CSP 頭

http
Content-Security-Policy: style-src-attr 'none'

……應用於下方元素的內聯樣式將不會被應用。

html
<div style="display:none">Foo</div>

此策略還會透過直接設定 style 屬性或設定 cssText 來阻止 JavaScript 中應用的任何樣式。

js
document.querySelector("div").setAttribute("style", "display:none;");
document.querySelector("div").style.cssText = "display:none;";

直接設定在元素的 style 屬性上的樣式屬性將不會被阻止,從而允許使用者透過 JavaScript 安全地操作樣式。

js
document.querySelector("div").style.display = "none";

請注意,使用 script-src CSP 指令可能會獨立地阻止 JavaScript 的使用。

規範

規範
內容安全策略級別 3
# directive-style-src-attr

瀏覽器相容性

另見