プロジェクトでXXE攻撃を防ぎたいのですが。これは、Java 7(Mavenなし)とjboss-as-7サーバーで実行される古いAPIプロジェクトです。しかし、実行中にエラーが発生します: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)
私はそれについて検索しましたが、すべてのフォーラムはバグだと言ってそれに対していくつかの異なる意味を持っています。この例外に関連する解決策は見つかりませんでした。助けてください。前もって感謝します。
最後に私はそれを解決しました。これが誰かを助けるために私は答えを投稿しています。オンラインソリューションを実行した後、上記のエラーの原因となっている主な問題を検出できませんでした。XXE防止のために我々はのようないくつかの定義されたプロパティが必要になります。XMLConstants.ACCESS_EXTERNAL_DTD XMLConstants.ACCESS_EXTERNAL_SCHEMA
xercesとjaxp-api jarを使用してxmlをpasrseし、apiによって提供されるxxeが上記のプロパティを設定して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がそれ自体のxerces jarをロードする場所で互いに競合するため、上記のエラーが発生します。
解決策:jboss / org / apache / xerces / main / modules.xmlファイルを変更して、jboss xerces実装を除外する必要があります。以下に示すように、行をコメント化します。
> <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>
次に、アプリケーションをデプロイして実行します。ハッピーコーディング。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加