解决使用SAX解析器解析xml的安全问题

时间:2012-05-31 16:37:37

标签: java android xml security saxparser

我有一个Android应用程序,用户可以输入任何xml源URL进行解析。我的应用程序然后解析xml(如果有效)并显示结果。

问题是,如果用户输入不受信任的xml源网址,则可能会影响应用和/或设备。

识别风险和防止漏洞利用的最佳方法是什么

通过我的研究,我发现启用FEATURE_SECURE_PROCESSING并禁用扩展可能会有所帮助。但是,任何人都可以告诉我它是什么,我如何实现它。

感谢。

2 个答案:

答案 0 :(得分:5)

经过研究,我发现了这一点。我希望这能解决我的问题。

启用FEATURE_SECURE_PROCESSING

SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);

禁用DTD

spf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

答案 1 :(得分:2)

  • 对于 SAX DOM 解析器,dcanh121指出不允许使用DTD。

    factory.setFeature(“http://apache.org/xml/features/disallow-doctype-decl”,true);

  • 对于 StAX 解析器:

    factory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,false);