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

Baseline 已广泛支持

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

HTTP Content-Security-Policy (CSP) script-src-attr 指令指定 JavaScript 内联事件处理程序的有效来源。

此指令仅指定像 onclick 这样的内联脚本事件处理程序的有效来源。它不适用于可以触发脚本执行的其他 JavaScript 来源,例如直接加载到 <script> 元素和 XSLT 样式表中的 URL。(可以使用 script-src 为所有 JavaScript 脚本来源指定有效来源,或者使用 script-src-elem 仅为 <script> 元素指定有效来源。)

CSP 版本 3
指令类型 获取指令
default-src 回退 是的。如果此指令缺失,用户代理将查找 script-src 指令,如果两者都缺失,则回退到 default-src 指令。

语法

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

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

'none'

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

<source-expression-list>

一个由源表达式值组成的空格分隔列表。如果资源类型与任何给定的源表达式匹配,则可以加载此类资源。对于此指令,以下源表达式值适用:

script-src-attr 可以与 script-src 结合使用,并将覆盖该指令以检查内联处理程序

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

示例

违规案例

给定此 CSP 头

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

...以下内联事件处理程序将被阻止,不会被加载或执行

html
<button id="btn" onclick="doSomething()"></button>

请注意,通常您应该用 addEventListener 调用替换内联事件处理程序

js
document.getElementById("btn").addEventListener("click", doSomething);

规范

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

浏览器兼容性

另见