如何保护DOM解析器

时间:2018-03-09 11:31:32

标签: java xml security xml-parsing

我的产品进行了安全审核,他们发现了一个漏洞,他们的建议是应安全配置XML解析器,以便它不允许文档类型定义(DTD)自定义实体和外部实体作为传入的一部分XML文档。

通过实现以下内容,我能够解决XML TransformerFactory的问题:

TransformerFactory transFact = TransformerFactory.newInstance();
transFact.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
transFact.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
Transformer trans = transFact.newTransformer(xsltSource);
trans.transform(xmlSource, result);

但是他们指的是一个代码,我没有任何线索来解决这个问题。

public static DOMSource parse(String xmlPayload) throws ResourceException {
    try {
        DOMParser oracleDomParser = new DOMParser();
        oracleDomParser.parse(new StringReader(xmlPayload));
        Document doc = oracleDomParser.getDocument();
        return new DOMSource(doc.getDocumentElement());
    } catch (Exception e) {
        throw new ResourceException(e.getMessage());
    }
}

0 个答案:

没有答案