2014-03-11 2 views
2

Как безопасно анализировать XML-документ, чтобы он не позволял внешним объектам как входящему XML-документу? Я использую DOM парсер -Безопасно проанализировать XML-документ

Document test = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(byteArrayInputStream)) 
+0

Вы хотели бы прочитать это [BlackHat бумаги] (https://www.blackhat.com/docs/us-15/materials/us-15-Wang-FileCry-The-New-Age-Of -XXE-java-wp.pdf) о том, как ваша защита может не обеспечивать безопасность в отношении атак типа XXE. В нем также упоминается, что @erickson указал на параметр FEATURE_SECURE_PROCESSING. –

ответ

3

Вы можете запросить безопасную обработку, установив FEATURE_SECURE_PROCESSING; запрещает ли это внешние сущности до провайдера в DocumentBuilderFactory, но это вероятный кандидат.

DocumentBuilderFactory f = DocumentBuilderFactory.newInstance(); 
f.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); 
Document test = f.newDocumentBuilder.parse(...); 
+0

Стоит отметить, что вы также должны установить 'f.setFeature (« http://xml.org/sax/features/external-general-entities », false);' В противном случае вы по-прежнему уязвимы для внешних сущностей : 'org.apache.xerces.impl.XMLEntityManager.startEntity (Unknown Source) называет org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity (Unknown Source) называет sun.net.www.protocol.ftp. FtpURLConnection.getInputStream (FtpURLConnection.java:393) ' –

Смежные вопросы