gpt4 book ai didi

java - 在 javax XML validator 中禁用 DTD

转载 作者:行者123 更新时间:2023-12-01 13:03:39 24 4
gpt4 key购买 nike

我正在使用 javax.xml.validation.Validator验证我的 xml 如下 -

        Validator validator = myschema.newValidator();
validator.validate(new StreamSource(new StringReader(xmlString)));

我想通过完全禁用 DTD(文档类型定义)来防止 XML 外部实体攻击,所以如果可能的话,我希望 validator 在我的 xml 中出现 DTD 的情况下抛出异常。我已经阅读过有关使用 DocumentBuilderFactory 执行此操作的信息.我如何在 Validator 中配置它?

最佳答案

根据OWASP XXE prevention spreadsheet对于 Java,以下应该有效:

SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Schema myschema = factory.newSchema();
Validator validator = myschema.newValidator();
try {
validator.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
validator.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
validator.validate(new StreamSource(new StringReader(xmlString)));
} catch ...

引用 XMLConstants JavaDocs更多细节。

关于java - 在 javax XML validator 中禁用 DTD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38721003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com