更新: XML_External_Entity_Prevention_Cheat_Sheet

作者: mackowski创建于 2026年9月30日更新于 2026年9月30日
标签ACK_WAITINGUPDATE_CSHELP_WANTED

改进 Java XXE 指导: 使快速参考指南更易于使用 ## 问题 最近重写的 Java 部分大大提高了指导的技术深度和一致性,但也使开发人员在寻找具体配置问题的实际答案时,难以使用快速参考指南。 以前的版本更为直观: 对于给定的 API,读者可以快速找到相关配置以及展示如何应用它的代码示例。 在当前版本中,读者通常需要了解多个概念并在不同部分之间导航,才能确定如何安全地配置特定的 API。 例如,使用 TransformerFactory 时,并不明显地知道如何获取和配置所需的安全 XMLReader。 读者可能需要结合多个部分的信息来构建最终解决方案。 这导致了技术解释与快速参考指南的实际目标之间的差距。 ## 指导应提供什么 为每个相关的 Java XML API,理想情况下,读者应能直接回答以下三个问题: 1. 安全风险是什么? 2. 我如何缓解它? 3. 安全配置在代码中看起来如何? 主要建议应易于首先找到,而高级细节和边缘情况则可以随后进行。 ## 建议的结构 考虑将 Java 部分重新组织为两层: ### 1. 可行用的快速指导 对于每个常用 API,提供: * 指导适用于什么情况; * 建议的安全配置; * 可直接复制粘贴的最小代码示例。 例如: * DocumentBuilderFactory * SAXParserFactory * XMLInputFactory * TransformerFactory * SchemaFactory * Validator * XMLReader * JAXB 和其他相关 API ### 2. 详细解释和边缘情况 保留关于以下内容的深入讨论: * JAXP 实现差异; * 解析器行为; * ACCESS_EXTERNAL_*; * FEATURE_SECURE_PROCESSING; * XSLT/XSD 引入和包含; * 目录和允许列表; * 失败关闭行为; * 实现特定的警告。 这将保留新版本的技术深度,同时使快速参考指南易于使用得多。 ## 当前可用性问题的示例 某些解释虽然技术上准确,但如果没有先了解 XML/JAXP 模型,则很难理解。 例如: > “由您自己的样式表或模式引用的内容 — xsl:import、xsl:include、xs:import、xs:include 和 XSLT document() 函数 — 是您的内容,将其分散到多个文件是常见的做法。 这些是需要限制的内容,而不是关闭的内容。” 作为读者,并不立即清楚: * 这是针对哪些特定威胁; * 这种情况何时适用; * 建议的配置是什么; * 对应的安全代码应该是什么样的。 可以更直接地呈现相同的信息 …

内容来源: OWASP/CheatSheetSeries