2012-05-31 3 views
4

У меня есть приложение для Android, в котором пользователь может ввести любой URL-адрес источника XML для синтаксического анализа. Затем мое приложение анализирует xml (если оно действительно) и отображает результаты.Решение анализа синтаксиса безопасности xml с использованием анализатора SAX

Вопрос, Если пользователь вводит ненадежный URL-адрес источника xml, приложение и/или устройство могут быть выполнены.

Каковы наилучшие способы определения риска и предотвращения использования.

С моим исследованием я обнаружил, что это может помочь включить FEATURE_SECURE_PROCESSING и отключить расширение. Но может ли кто-нибудь сказать мне, что это такое, и как мне это достичь.

Спасибо.

+0

Вы используете схему для проверки содержимого XML? –

ответ

4

После изучения, я нашел это. Надеюсь, это решит мою проблему.

Чтобы включить FEATURE_SECURE_PROCESSING

SAXParserFactory spf = SAXParserFactory.newInstance(); 
spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); 

Отключить DTDs

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

Это действительно сработало? При этом я получаю исключение. – digitizedx

2
  • Для SAX и DOM парсеры, запрещая DTD, должно быть достаточным, как отмечено dcanh121.

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

  • Для StAX анализатор:

    factory.setProperty (XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, ложь);

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

  • Нет связанных вопросов^_^