对于 xsl 转换我使用这个接口:javax.xml.transform.Transformer
实现是saxon.jaxp.TransformerImpl
我需要使这个 Transformer 对XML External Entity (XXE) Attacks安全。现在,如果有一个外部实体,它就会被调用并用于拒绝服务攻击。
有没有办法配置变压器?我知道如何使用 saxon Parser 来做到这一点,但我只有 Transformer 类,我不知道如何从中取出 Parser。
对于 xsl 转换我使用这个接口:javax.xml.transform.Transformer
实现是saxon.jaxp.TransformerImpl
我需要使这个 Transformer 对XML External Entity (XXE) Attacks安全。现在,如果有一个外部实体,它就会被调用并用于拒绝服务攻击。
有没有办法配置变压器?我知道如何使用 saxon Parser 来做到这一点,但我只有 Transformer 类,我不知道如何从中取出 Parser。
首先(很抱歉,这有点愤世嫉俗),您需要确定您是要尝试防御攻击,还是要尝试通过某些扫描工具执行的安全检查。这些不是一回事。
假设您真的在尝试防御攻击,首先要确定样式表作者是否可信。
如果您正在运行不受信任的样式表,那么您确实需要非常小心;特别是,不要沉迷于 XML 实体攻击,因为不受信任的样式表可以通过许多其他方式访问您机器上的数据或进入无限循环。
如果您正在运行受信任的样式表(但针对不受信任的 XML 文档),那么事情会容易得多:最简单的方法是通过提供 URIResolver 来控制自己解析的所有 XML。然后您只需要担心如何将解析器配置为安全的,而不是尝试通过 XSLT 引擎间接控制它。