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 的浏览器中加载。
另请参阅
内容安全策略
- 跨站脚本 (XSS)
- 受信任类型涵盖的 DOM XSS 注入接收器
- 使用受信任类型防止基于 DOM 的跨站脚本漏洞
- 使用 DOMPurify XSS 净化器实现受信任类型
- 受信任类型的 polyfill