概述Sanitizer API 提供原生的 HTML 清理能力,按允许列表移除危险元素与属性(如脚本事件),用于防止 XSS。可与 Trusted Types 协同,将不可信字符串转换为安全的 `TrustedHTML` 并在受控点插入。示例const sanitizer = new Sanitizer({ allowedElements: ['b','i','strong','em','a'], allowedAttributes: { 'a': ['href'] } })
const unsafe = '<img src=x onerror=alert(1)><a href="https://example.com">link</a>'
const safeFragment = sanitizer.sanitize(unsafe)
document.getElementById('content').append(safeFragment)
与 Trusted Types 协同(示意)// 在启用 Trusted Types 的站点中,仅接受 TrustedHTML
// 通过 Sanitizer 生成安全片段,再转为字符串用于必要场景
const fragment = sanitizer.sanitize(unsafe)
const div = document.createElement('div'); div.append(fragment)
const trusted = trustedTypes.createPolicy('default', { createHTML: s => s }).createHTML(div.innerHTML)
target.innerHTML = trusted
工程建议允许列表:按业务定义最小集合;默认拒绝危险元素与事件属性。上下文安全:避免在敏感容器中插入未经清理的 HTML;配合 CSP 与 Trusted Types。兼容与回退:在不支持浏览器使用成熟库(如 DOMPurify)并保持策略一致。参考与验证MDN Sanitizer API(实验性)文档:https://developer.mozilla.org/docs/Web/API/SanitizerChrome 平台说明:https://developer.chrome.com/docs/web-platform/sanitizer/web.dev XSS 与策略指南:https://web.dev/secure/

发表评论 取消回复