欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

XSS 防御纵深:Trusted Types 与 DOM 净化(DOMPurify)实践

发表于:|最后更新:|分类:Web安全|阅读:2442 次

传统黑名单过滤难以覆盖 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;