Разрешение внешней сущности WebLogic XML: Есть ли другой способ, кроме использования реестра XML?

StackOverflow https://stackoverflow.com/questions/1209743

Вопрос

У нас есть приложение, которое использует SiteMesh, и когда WebLogic пытается проанализировать файлы TLD, он видит спецификацию DOCTYPE, содержащую ссылку на DTD TLD, по адресу http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd ".

Сервер не может инициировать исходящие подключения к Интернету и поэтому не может получить DTD, что приводит к сбою развертывания приложения.

Я понимаю, что эту проблему можно решить, настроив реестр XML в консоли WebLogic и указав локальный файл, возвращаемый при попытке разрешения, например " http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd ".

Есть ли другой способ предотвратить выход сервера в сеть для разрешения ссылки на внешнюю сущность? Путем упаковки DTD с приложением и каким-то образом информирования сервера о необходимости поиска этого DTD, а не «там»?

Это было полезно?

Решение

Быстрый вопрос. Вы пытаетесь сделать это по соображениям безопасности? хотели бы предотвратить любую атаку XXE?

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

Примеры можно найти здесь https: //www.securecoding .cert.org / слияния / страницы / viewpage.action? PageId = 61702260

в противном случае вам нужно установить свойства config XMLInputFactory, чтобы получить желаемое поведение. в частности, javax.xml.stream.isSupportingExternalEntities и javax.xml.stream.isValidating зависит только от того, считаете ли вы, что вам нужна проверка.

http://docs.oracle.com/ JavaEE / 5 / API / javax / XML / поток / XMLInputFactory.html

Также загляните в парсер StaX, если это имеет смысл для вашего использования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top