2015-06-22 4 views
2

У меня есть следующий вывод в своем докладе Veracode: Неправильное ограничение XML External Entity Reference ('XXE') (CWE ID 611) со ссылкой на следующий код сильфонаVeracode XML External Entity Reference (XXE)

...

>  DocumentBuilderFactory dbf=null;  DocumentBuilder db = null;  try {  dbf=DocumentBuilderFactory.newInstance(); 
>  dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); 
>  dbf.setExpandEntityReferences(false); 
>  dbf.setXIncludeAware(false);  dbf.setValidating(false);  db = 
> dbf.newDocumentBuilder(); 
>  InputStream stream = new ByteArrayInputStream(datosXml.getBytes()); 
>  Document doc = null;   doc= db.parse(stream, ""); 

...

Я исследовал, но я не обнаружил причину этого факта или способ сделать его исчезнуть. Не могли бы вы рассказать мне, как это сделать?

ответ

5

Вы видели the OWASP guide about XXE?

Вы не отключите 3 функции, которые вы должны отключить. Самое главное первое:

dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); 
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false); 
dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false); 
+0

С новыми правилами это не сработает. Veracode сообщит об этом – Xelian

+0

OWASP теперь добавила более обширный документ о том, как предотвратить XXE: https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet Но я должен признать, что я не знаю veracode на всех, и у меня нет доступа к нему. Поэтому я не могу подтвердить, соответствуют ли рекомендации OWASP в соответствии с veracode. Но я не понимаю, почему он больше не будет работать. Возможно, вы используете другой синтаксический анализатор XML, который нужно настроить немного иначе? – DelGurth

+0

Нет, я использую предыдущее исправление, и Veracode прекратил сообщать об этом, но потом снова начал несколько дней назад. Я использую тот же парсер. – Xelian

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