传统黑名单过滤难以覆盖 DOM Clobbering 与 Mutation XSS 等变体。Trusted Types 强制所有危险 DOM 赋值(innerHTML、eval)必须经过已注册的净化策略,从浏览器 API 层面根除 DOM XSS 注入点。
一、Trusted Types 策略与 DOMPurify 集成
javascript
// 注册唯一净化策略,强制所有 innerHTML 赋值走该策略
if (window.trustedTypes && trustedTypes.createPolicy) {
const policy = trustedTypes.createPolicy('default', {
createHTML: (dirty) => DOMPurify.sanitize(dirty, {
ALLOWED_TAGS: ['b', 'i', 'em', 'strong', 'a', 'p'],
ALLOWED_ATTR: ['href', 'title'],
}),
});
// 合法赋值:自动经过 DOMPurify 净化
document.getElementById('content').innerHTML = policy.createHTML(userInput);
}http
# 启用 Trusted Types 强制模式
Content-Security-Policy: require-trusted-types-for 'script'; trusted-types default;