Отключение внешних сущностей Ошибка синтаксического анализа XMLJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Отключение внешних сущностей Ошибка синтаксического анализа XML

Сообщение Anonymous »

Я получаю блокирующую уязвимость от SonarQube (отключение доступа к внешним объектам при синтаксическом анализе XML.) в моем коде:

Код: Выделить всё

public void validateAgainstScheme(String xmlContent, String xsdLocation) throws SAXException, IOException
{
Objects.requireNonNull(xmlContent);
Objects.requireNonNull(xsdLocation);
URL resource = getClass().getClassLoader()
.getResource(xsdLocation);

SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

Schema schema = schemaFactory.newSchema(new Source[]
{
new StreamSource(String.valueOf(resource))
});
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new StringReader(xmlContent)));
}
Я пытаюсь проверить содержимое строки, содержащей XML, на соответствие XSD, который есть в ресурсах моего проекта. SonarLint, а также OWASP (предотвращение внешних объектов XML) рекомендуют одно из следующих действий:

Код: Выделить всё

schemaFactory.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
schemaFactory.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
или:

Код: Выделить всё

schemaFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
Установка свойств ACCESS_EXTERNAL_DTD и ACCESS_EXTERNAL_SCHEMA приводит к ошибке:

Код: Выделить всё

Error parsing load rule: schema_reference: Failed to read schema document 'MyRule.xsd', because 'file' access is not allowed due to restriction set by the accessExternalSchema property.
Добавление «файлового» протокола к accessExternalSchema возвращает исходную ошибку SonarQube. Установка функции «disallow-doctype-decl, true», как указано выше, похоже, никак не влияет на мою проблему.
Я абсолютно не могу найти какое-либо решение в Интернете и буду признателен за любую помощь. как проверить XML на соответствие XSD, используя файлы из ресурсов в Java способом сохранения XXE.

Подробнее здесь: https://stackoverflow.com/questions/787 ... sing-error
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»