CSP:require-trusted-types-for

可用性有限

此功能并非基础功能,因为它在一些最常用的浏览器中无法正常工作。

实验性: 这是一个 实验性技术
在生产环境中使用此功能前,请仔细查看 浏览器兼容性表格

HTTP Content-Security-Policy (CSP) require-trusted-types-for 实验性 指令指示用户代理控制传递给 DOM XSS 接收函数(例如 Element.innerHTML 设置器)的数据。

使用此指令时,这些函数仅接受由受信任类型策略创建的不可伪造的类型化值,并拒绝字符串。结合 trusted-types 指令(该指令用于保护受信任类型策略的创建),这允许作者定义规则来保护向 DOM 写入值,从而将 DOM XSS 攻击面缩小到 Web 应用程序代码库的少量隔离部分,从而方便监控和代码审查。

语法

http
Content-Security-Policy: require-trusted-types-for 'script';
'脚本'

禁止使用带有 DOM XSS 注入接收函数的字符串,并要求使用由受信任类型策略创建的匹配类型。

示例

js
// Content-Security-Policy: require-trusted-types-for 'script'; trusted-types foo;

const attackerInput = '<svg onload="alert(/cross-site-scripting/)" />';
const el = document.createElement("div");

if (typeof trustedTypes !== "undefined") {
  // Create a policy that can create TrustedHTML values
  // after sanitizing the input strings with DOMPurify library.
  const sanitizer = trustedTypes.createPolicy("foo", {
    createHTML: (input) => DOMPurify.sanitize(input),
  });

  el.innerHTML = sanitizer.createHTML(attackerInput); // Puts the sanitized value into the DOM.
  el.innerHTML = attackerInput; // Rejects a string value; throws a TypeError.
}

规范

规范
受信任类型
# require-trusted-types-for-csp-directive

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅