WebLogic XML外部エンティティの解決:XMLレジストリを使用する以外の方法はありますか?

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

質問

SiteMeshを使用するアプリケーションがあり、WebLogicがTLDファイルを解析しようとすると、TLD DTDへの参照を含むDOCTYPE仕様が" http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd "。

サーバーはインターネットへのアウトバウンド接続を開始できないため、DTDを取得できず、アプリケーションのデプロイメントが失敗します。

この問題は、WebLogicコンソールでXMLレジストリを設定し、解決しようとしたときに返すローカルファイルを指定することで解決できることを理解しています。たとえば、" http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd "。

外部エンティティ参照を解決するためにサーバーが「ネット」に出ないようにする他の方法はありますか? DTDをアプリケーションにパッケージ化し、どうにかして「外に」ではなく、そこにあるDTDを探すようにサーバーに通知しますか?

役に立ちましたか?

解決

簡単な質問セキュリティ上の理由でこれをしようとしていますか?あらゆる種類のXXE攻撃を防ぎたいですか?

その場合、独自のEntityResolverを実装し、パーサーがローカルまたはリモートのルックアップを行う方法を処理できます。

例はここにあります https://www.securecoding .cert.org / confluence / pages / viewpage.action?pageId = 61702260

それ以外の場合は、XMLInputFactoryの構成プロパティを設定して、必要な動作を取得する必要があります。特に、javax.xml.stream.isSupportingExternalEntitiesとjavax.xml.stream.isValidatingは、検証が必要だと思うかどうかだけに依存します。

http://docs.oracle.com/ javaee / 5 / api / javax / xml / stream / XMLInputFactory.html

また、StaXパーサーを使用する意味がある場合は調べてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top