我有一个 android 应用程序,用户可以在其中输入任何 xml 源 URL 进行解析。然后我的应用程序解析 xml(如果有效)并显示结果。
问题是,如果用户输入不受信任的 xml 源 url,则应用程序和/或设备可能会受到影响。
识别风险和防止漏洞利用的最佳方法是什么?
通过我的研究,我发现启用 FEATURE_SECURE_PROCESSING 和禁用扩展可能会有所帮助。但是谁能告诉我它是什么,以及我如何实现它。
谢谢。
经过研究,我发现了这一点。我希望这能解决我的问题。
启用 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);
对于SAX和DOM解析器,如 dcanh121 所述,禁止 DTD 就足够了。
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
对于StAX解析器:
factory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, false);