0

プロジェクトにESAPIを使用していて、ESAPI構成ディレクトリを追加src/main/resourcesしてWARファイルにコピーしました(cloudbeesからWARをダウンロードしましたが、WEB-INF/classes/esapi/ディレクトリに配置されていることがわかります)

ローカルでは、ディレクトリがどこにあるかを指定するだけで、すべて正常に機能しますが、cloudbeesでは機能しません。

ESAPIプロジェクトは、そのプロパティにアクセスするために、org.owasp.esapi.resourcesシステムプロパティのチェックを含め、あらゆる種類の処理を試行するため、次のコードを次のように追加しましたcloudbees-web.xml

<sysprop name="org.owasp.esapi.resources" value="WEB-INF/classes/esapi/" />

ログに次のエラーがあるため、システムプロパティ値が見つかったことがわかります。

Not found in 'org.owasp.esapi.resources' directory or file not readable: /var/genapp/apps/akld3873/WEB-INF/classes/esapi/ESAPI.properties

したがって、システムプロパティは検出されますが(パスは指定したとおりであるため)、実際のディレクトリとその中のファイルを検索すると、ディレクトリが存在しないか、読み取り不能であると推測されます。

別の場所に移動する必要がありますか?WEB-INFディレクトリ内かもしれませんか?設定がおかしいですか?他の人がこのディレクトリ専用のJARを構築することで同様の問題を解決したことを読みましたが、これは良い解決策とは思えません。cloudbeesで機能する簡単なセットアップが必要です。

4

2 に答える 2

1

構成へのディレクトリ アクセスを必要とする ESAPI ライブラリの設計は、あまり柔軟ではありません。一般的なオプションは、ServletContext.getRealPathを使用して絶対ファイルシステム パスをこのディレクトリに解決し、それを ESAPI に渡すことです。

もう 1 つのオプションは、WEB-INF/classes/esapi コンテンツを一時ディレクトリにコピーする初期化コードを用意し (java.io.temp システム プロパティを使用してアプリの現在構成されている一時ディレクトリを指す)、ESAPI lib を指すようにすることです。このパス。

于 2012-09-24T08:07:46.957 に答える
1

わかりましたので、検索してテストした後、最終的にそれを理解しました。Cloudbees は、Web アプリを次のディレクトリにデプロイします。

staxcat/install/webapp.war/

これは相対パスであることに注意してください。このパスのプレフィックスを付けると、次のようになります。

/var/genapp/apps/xxxxxxxx/staxcat/install/webapp.war/WEB-INF/esapi/ESAPI.properties

そのため、ESAPI を機能させるには、cloudbees-web.xml で次のように設定する必要がありました。

<sysprop name="org.owasp.esapi.resources" value="staxcat/install/webapp.war/WEB-INF/esapi" />

これにより、プロジェクト内でディレクトリが次の場所にある場合、ESAPI はそのディレクトリを見つけることができます。

src/main/webapp/WEB-INF/esapi

次のログ行が表示されます。

Found in 'org.owasp.esapi.resources' directory: /var/genapp/apps/xxxxxxxxx/staxcat/install/webapp.war/WEB-INF/esapi/ESAPI.properties
于 2012-09-27T08:58:33.277 に答える