Android Studio не может найти свойство XMLConstants.ACCESS_EXTERNAL_DTD - PullRequest
1 голос
/ 12 февраля 2020

У меня очень похожая проблема с этим постом - Java и Xerces: не удается найти свойство XMLConstants.ACCESS_EXTERNAL_DTD - но при работе с Android Studio IDE.

Я также пытаюсь исправить ту же проблему с отключением обработки XML внешней сущности (XXE), которая возникает как уязвимость в нашем анализе SonarCloud (см .: https://sonarcloud.io/project/issues?id=org.digitalcampus.mobile.learning&open=AW3ezGnx-dJmagWAiKPH&resolved=false&types=VULNERABILITY).

Насколько я могу судить, у меня установлена ​​самая последняя версия Android Studio, а также все последние обновления для Java, мой Android Studio about диалог показывает это:

Android Studio 3.5.3
Build #AI-191.8026.42.35.6010548, built on November 15, 2019
JRE: 1.8.0_202-release-1483-b49-5587405 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Linux 4.15.0-76-generic

Буду очень признателен за любые отзывы / помощь о том, как я могу решить эту проблему, чтобы я мог удалить уязвимость из своего кода. Просто дайте мне знать, если есть какая-либо другая конкретная c информация (версии и c), которая может вам понадобиться.

Заранее спасибо за помощь ...

Обновление (14/2/20) ... похоже, что константа ACCESS_EXTERNAL_DTD недоступна в Android - см. Справочные документы Android java: https://developer.android.com/reference/javax/xml/XMLConstants.html.

Так будет ли достаточной константа FEATURE_SECURE_PROCESSING?

1 Ответ

2 голосов
/ 17 февраля 2020

Вы можете использовать приведенный ниже код для решения вашей проблемы, проверьте 1007 * Шпаргалку по предотвращению внешних субъектов для получения более подробной информации

 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    String FEATURE = null;
    try {

        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);
        dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
        dbf.setXIncludeAware(false);
        dbf.setExpandEntityReferences(false);


    } catch (ParserConfigurationException e) {
        // This should catch a failed setFeature feature


    } catch (SAXException e) {
        // On Apache, this should be thrown when disallowing DOCTYPE

    } catch (IOException e) {
        // XXE that points to a file that doesn't exist

    }

// Load XML file or stream using a XXE agnostic configured parser...
        DocumentBuilder safebuilder = dbf.newDocumentBuilder();

, если это было полезно, пожалуйста, отметьте это как ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...