2012-05-31 125 views
4

我有一個Android應用程序,其中用戶可以輸入任何XML源URL解析XML解析。我的應用程序然後解析XML(如果有效)並顯示結果。解決安全問題使用SAX解析器

問題是,如果用戶輸入不受信任的xml源url,應用程序和/或設備可能會受到影響。

什麼是識別風險,防止利用的最好的方式。

隨着我的研究,我發現,啓用FEATURE_SECURE_PROCESSING和禁用擴展可能的幫助。但是誰能告訴我它是什麼,我該如何實現它。

謝謝。

+0

你用一個模式來驗證XML內容? – 2012-05-31 17:34:00

回答

4

研究後,我發現這一點。我希望這能解決我的問題。

要啓用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); 
+0

這實際上工作嗎?這樣做時我收到一個異常。 – digitizedx

2
  • 對於SAXDOM解析器,不允許DTD應足以dcanh121指出。

    factory.setFeature( 「http://apache.org/xml/features/disallow-doctype-decl」,TRUE);

  • 對於的StAX解析器:

    factory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES,FALSE);