org.xml.sax.SAXNotRecognizedException: свойство 'http://javax.xml.XMLConstants/property/accessExternalDTD' не распознано - PullRequest
0 голосов
/ 14 октября 2019

Я хочу предотвратить XXE-атаку в моем проекте. Это старый проект API, который работает на java 7 ( no maven ) и сервере jboss-as-7. Но во время выполнения я получаю ошибку: org.xml.sax.SAXNotRecognizedException: свойство 'http://javax.xml.XMLConstants/property/accessExternalDTD' не распознано .

 org.xml.sax.SAXNotRecognizedException: Property 'http://javax.xml.XMLConstants/property/accessExternalDTD' is not recognized.

15:19:02,845 ERROR [stderr] (http-localhost-127.0.0.1-8080-3)   at org.apache.xerces.jaxp.validation.ValidatorImpl.setProperty(ValidatorImpl.java:218)

15:19:02,846 ERROR [stderr] (http-localhost-127.0.0.1-8080-3)   at com.uid.kua.web.KUARestController.authenticateAtAUA(KUARestController.java:118)

15:19:02,847 ERROR [stderr] (http-localhost-127.0.0.1-8080-3)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

15:19:02,847 ERROR [stderr] (http-localhost-127.0.0.1-8080-3)   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

15:19:02,848 ERROR [stderr] (http-localhost-127.0.0.1-8080-3)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

15:19:02,849 ERROR [stderr] (http-localhost-127.0.0.1-8080-3)   at java.lang.reflect.Method.invoke(Method.java:606)

Я искал об этом икаждый форум имеет свое значение, говоря, что это ошибка. Я не нашел подходящего решения для этого исключения. Пожалуйста помоги. Заранее спасибо.

1 Ответ

0 голосов
/ 23 октября 2019

Наконец я решил это. Я выкладываю ответ на случай, если это кому-нибудь поможет. Пройдя через онлайн-решения, я не смог обнаружить основную проблему, которая вызывала вышеуказанную ошибку. Для предотвращения xxe нам нужны некоторые определенные свойства, такие как: XMLConstants.ACCESS_EXTERNAL_DTD XMLConstants.ACCESS_EXTERNAL_SCHEMA

Нам нужны xerces и jaxp-ap jars для передачи xml и предотвращения xxe, предоставляемого API для разрешения xml, путем установки некоторых вышеперечисленных свойств. До JDK 7 они уже включены в JDK 7 и выше. Поэтому нам не нужно импортировать вышеупомянутые jar-файлы в наш путь к классам проекта.

В моем случае я использовал jboss-as-7.1.1.Final в качестве сервера приложений, который также имеет свой собственный xerces jar (org.apache.xerces. ) . Но java также поставляется с собственной реализацией xerces и jaxp (com.sun.xerces. ) . Таким образом, при развертывании войны мы получаем вышеуказанную ошибку, так как оба этих jar конфликтуют друг с другом, когда jboss загружает свои собственные jerces jar.

Решение: Нам нужно исключить реализацию jboss xerces, внеся изменения в jboss / org / apache / xerces / main / modules.xml файл. Закомментируйте строки, как показано ниже:

> <module xmlns="urn:jboss:module:1.1" name="org.apache.xerces">    
> <!--
>     <resources>
>         <resource-root path="xercesImpl-2.9.1-jbossas-1.jar"/>
>         Insert resources here
>     </resources>
> -->
>     <dependencies>
>         <module name="javax.api"/>
>     </dependencies>
> 
> </module>

Теперь разверните и запустите ваше приложение. Удачного кодирования.

...