## 在 Microsoft Edge 中禁用 XSLT:新策略与安全风险
微软将在 2026 年 4 月 9 日发布的 Edge 147 版本中引入一项禁用 XSLT 的策略。XSLTEnabled 功能允许管理员控制对过时 XML 转换语言的访问,从而最小化相关漏洞。这是对完全弃用迈出的一步,与 Chromium、WebKit 和 Gecko 的计划保持一致。
XSLT 是什么,为什么它已过时
XSLT(Extensible Stylesheet Language Transformations)是 1999 年 W3C 标准,用于将 XML 转换为 HTML 或其他格式。该语言的最新版本并未获得浏览器广泛支持。使用统计:仅有 0.02% 的网页使用 XSLT,转换占比不到 0.001%。
现代替代方案提供更大的灵活性:
- JavaScript 框架(React、Vue.js)用于动态数据处理。
- Web Components 和 Shadow DOM 用于结构化转换。
- 使用模板引擎(Handlebars、Pug)进行服务器端渲染。
这些工具可与 REST/GraphQL API 无缝集成,避免客户端 XML 解析器。
Edge v147 中的 XSLTEnabled 策略
Edge 147 的安全更新新增了一组控制 XSLT 的策略:
- XSLTEnabled:全局启用或禁用 XSLT 处理器。
- XSLTBaseURL:样式表的基础 URL(限于企业场景)。
- XSLTSecurityManager:管理对 DOM 和网络资源的访问。
建议企业客户测试禁用它:评估对遗留应用的影响,监控解析错误日志。微软强调网络安全风险——libxslt 存在未修补漏洞,因为缺乏积极维护。
该策略可通过 Windows 注册表(HKLM\SOFTWARE\Policies\Microsoft\Edge\XSLTEnabled)或 Active Directory 中的组策略应用。注册表语法:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge]
"XSLTEnabled"=dword:00000000
重启 Edge 后,转换将被阻止,并返回 NS_ERROR_XSLT_NOT_AVAILABLE 错误。
各浏览器弃用时间表
- Edge (Chromium):v147(2026 年 4 月)引入策略,完全移除跟随 Chromium。
- Chrome:146(2026 年 3 月)测试,176(2027 年 8 月)禁用。
- Safari (WebKit):计划 2027 年移除,转向 SwiftUI 处理类似 XML 任务。
- Firefox (Gecko):类似策略正在开发中,优先使用 WebAssembly 进行转换。
Chromium 开发者正在协调迁移:chrome://flags/#enable-xslt 标志正在逐步淘汰。
安全风险与迁移
XSLT 核心库 libxslt 易受 XXE(XML External Entity)攻击影响,攻击者可提取本地文件或执行 SSRF。由于缺乏补丁,2026 年继续使用风险很高。
中高级开发者的迁移策略:
- 代码审计:
grep -r 'xslt\.'或堆栈跟踪分析。 - 用 JS 中的 XPath + DOMParser 替换。
- 测试:使用 Puppeteer 模拟禁用 XSLT。
- 降级处理:使用 Modernizr 进行功能检测,或原生
document.implementation.hasFeature('XSLT', '1.0')。
将简单 XSLT 迁移到 JS 示例:
// Legacy XSLT
const xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsltDoc);
const result = xsltProcessor.transformToFragment(xmlDoc, document);
// Modern JS alternative
function transformXML(xmlString, xslString) {
const xmlDoc = new DOMParser().parseFromString(xmlString, 'text/xml');
const xslDoc = new DOMParser().parseFromString(xslString, 'text/xml');
const xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
return xsltProcessor.transformToDocument(xmlDoc);
}
关键要点
- Edge 147 中的 XSLTEnabled 策略从 2026 年 4 月开始实现 XSLT 的受控弃用。
- libxslt 漏洞(XXE、SSRF)在无补丁情况下使该技术不安全。
- 迁移到 JS 转换或服务器端模板化——2027 年将成为标准。
- 所有引擎(Chromium、WebKit、Gecko)将于 2027 年统一弃用。
- 企业管理员:通过 GPO 测试,监控遗留 XML 应用。
— Editorial Team
暂无评论。