6

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

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

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

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

谢谢。

4

2 回答 2

6

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

启用 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);
于 2012-05-31T18:01:39.270 回答
2
  • 对于SAXDOM解析器,如 dcanh121 所述,禁止 DTD 就足够了。

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

  • 对于StAX解析器:

    factory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, false);

于 2012-06-01T13:17:23.257 回答