🛡️ <dialog> 弹出第三方 HTML,图省事直接 innerHTML 注入,结果 XSS、样式污染、焦点失控接踵而至。三道防护缺一不可。
第一道,过滤。第三方 HTML 先过 DOMPurify,剥掉 script、onerror 等危险节点,只允许白名单标签与属性。

第二道,清空。注入前 replaceChildren() 清掉旧节点,避免残留事件与样式串味。
第三道,隔离。弹窗内强制重置样式作用域,关键交互补 aria 并设焦点陷阱,防止 Tab 跑到遮罩外。⚠️ dialog 本身无沙箱,这层必须手动做。
其余风险:来源不可信时,优先用 iframe 加沙箱,比手动防御更彻底。
