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

Baseline 已广泛支持

此功能已成熟,可跨多个设备和浏览器版本使用。自 2022 年 12 月起,所有浏览器均已提供此功能。

HTTP Content-Security-Policy (CSP) style-src-elem 指令指定了样式表 <style> 元素和带有 rel="stylesheet"<link> 元素的有效来源。

该指令不设置内联样式属性的有效来源;这些来源是使用 style-src-attr 设置的(所有样式的有效来源可以使用 style-src 设置)。

CSP 版本 3
指令类型 获取指令
default-src 回退

是的。如果此指令不存在,用户代理将查找 style-src 指令,如果两者都不存在,则回退到 default-src 指令。

语法

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

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

'none'

不允许加载此类型的任何资源。单引号是强制性的。

<source-expression-list>

以空格分隔的源表达式值列表。如果此类型的资源与任何给定的源表达式匹配,则可以加载它们。对于此指令,除了 'unsafe-hashes' 之外,style-src 适用的源表达式值同样适用。

style-src-elem 可以与 style-src 结合使用。

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

示例

违规情况

给定此 CSP 头

http
Content-Security-Policy: style-src-elem https://example.com/

...以下样式表被阻止且无法加载

html
<link href="https://not-example.com/styles/main.css" rel="stylesheet" />

<style>
  #inline-style {
    background: red;
  }
</style>

<style>
  @import "https://not-example.com/styles/print.css" print;
</style>

...以及使用 Link 标头加载的样式

http
Link: <https://not-example.com/styles/stylesheet.css>;rel=stylesheet

规范

规范
内容安全策略级别 3
# 指令-style-src-elem

浏览器兼容性

另见