22

Web アプリケーションにセキュリティを提供するために ESAPI.jar を使用しようとしています。基本的に、ESAPI.jar の使用を開始したばかりです。しかし問題は、ESAPI を使用した単純なプログラムでさえ実行できないことです。小さなコード スニペットは次のとおりです。

String clean = ESAPI.encoder().canonicalize("someString");
Randomizer r=ESAPI.randomizer();    
System.out.println(r);
System.out.println(clean);

次のエラーが表示されます。

Attempting to load ESAPI.properties via file I/O.
Attempting to load ESAPI.properties as resource file via file I/O.
Not found in 'org.owasp.esapi.resources' directory or file not readable: D:\Eclipse-Workspace\Test\ESAPI.properties
Not found in SystemResource Directory/resourceDirectory: .esapi\ESAPI.properties
Not found in 'user.home' (C:\Documents and Settings\user.user) directory: C:\Documents and Settings\user.user\esapi\ESAPI.properties
Loading ESAPI.properties via file I/O failed. Exception was: java.io.FileNotFoundException
Attempting to load ESAPI.properties via the classpath.
ESAPI.properties could not be loaded by any means. Fail. Exception was: java.lang.IllegalArgumentException: Failed to load ESAPI.properties as a classloader resource.
Exception in thread "main" org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException SecurityConfiguration class (org.owasp.esapi.reference.DefaultSecurityConfiguration) CTOR threw exception.
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:129)
    at org.owasp.esapi.ESAPI.securityConfiguration(ESAPI.java:184)
    at org.owasp.esapi.ESAPI.encoder(ESAPI.java:99)
    at org.rancore.testJasp.TestEsapi.main(TestEsapi.java:59)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:86)
    ... 3 more
Caused by: org.owasp.esapi.errors.ConfigurationException: ESAPI.properties could not be loaded by any means. Fail.
    at org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfiguration(DefaultSecurityConfiguration.java:439)
    at org.owasp.esapi.reference.DefaultSecurityConfiguration.<init>(DefaultSecurityConfiguration.java:227)
    at org.owasp.esapi.reference.DefaultSecurityConfiguration.getInstance(DefaultSecurityConfiguration.java:75)
    ... 8 more
Caused by: java.lang.IllegalArgumentException: Failed to load ESAPI.properties as a classloader resource.
    at org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfigurationFromClasspath(DefaultSecurityConfiguration.java:667)
    at org.owasp.esapi.reference.DefaultSecurityConfiguration.loadConfiguration(DefaultSecurityConfiguration.java:436)
    ... 10 more

ソース フォルダーに 3 つの ESAPI プロパティ ファイルをコピーし、それらをビルド パスで構成しようとしましたが、まだ成功していません。私は多くの順列と組み合わせを試しましたが、役に立ちませんでした。

私を案内してください。

プロパティ ファイルの内容は次のとおりです。

# User Messages
Error.creating.randomizer=Error creating randomizer

This.is.test.message=This {0} is {1} a test {2} message

# Validation Messages

# Log Messages
4

10 に答える 10

25

ESAPI.properties ファイルには、3 行以上が含まれている必要があります。例を参照してください。

https://web.archive.org/web/20150904064147/http://code.google.com:80/p/owasp-esapi-java/source/browse/trunk/configuration/esapi/ESAPI.properties

私の経験では、ESAPI.properties ファイルは esapi.jar と同じフォルダーに配置するか、リソース ディレクトリの jar にコンパイルする必要があります。

/resources/ESAPI.properties

どちらかが機能するはずだと思います。ESAPI が 1 つの場所でファイルを見つけられない場合、別の場所を探します。

そのためのコードは、620 行目あたりにあります。

https://web.archive.org/web/20161005210258/http://code.google.com/p/owasp-esapi-java/source/browse/trunk/src/main/java/org/owasp/esapi/参照/DefaultSecurityConfiguration.java

于 2011-10-08T15:19:18.210 に答える
3

この問題が発生し、インストール ドキュメント (esapi-xxx-dist\documentation\esapi4java-core-xx-install-guide.pdf) を見た後、VM があれば、プロパティ ファイルをどこにでも配置できることを詳述した非常に役立つセクションを見つけました。フラグ ( -Dorg.owasp.esapi.resources=path") は特定のディレクトリを指します。たとえば、プロジェクト ディレクトリのルートにある "resources" フォルダーにファイルを貼り付けた場合、フラグは次のようになります。

-Dorg.owasp.esapi.resources="path\to\project\root\resources"
于 2014-06-09T13:52:25.307 に答える
2

参照 SecurityConfiguration は、ESAPI で使用されるすべての設定を 1 か所で管理します。この参照実装では、リソースを複数の場所に配置でき、次の順序で検索されます。

1) SecurityConfiguration.setResourceDirectory( "C:\temp\resources" ) の呼び出しで設定されたディレクトリ内。

2) System.getProperty( "org.owasp.esapi.resources" ) ディレクトリ内。これは、Java コマンド ラインで次のように設定できます (例)。

            java -Dorg.owasp.esapi.resources="C:\temp\resources"

Web サーバーを起動する起動スクリプトにこれを追加する必要がある場合があります。たとえば、Tomcat の場合、Tomcat を起動する「catalina」スクリプトで、JAVA_OPTS 変数を上記の -D 文字列に設定できます。

3) System.getProperty( "user.home" ) + "/.esapi" ディレクトリ内 (下位互換性のためにサポート) または System.getProperty( "user.home" ) + "/esapi" ディレクトリ内。

4) クラスパスの最初の「.esapi」または「esapi」ディレクトリ。(下位互換性のための前者。)

于 2016-03-09T15:54:06.133 に答える
0

ファイルを(この名前で)次の場所に置くことができますか:

D:\Eclipse-Workspace\Test\ESAPI.properties

そして、内容と例外をもう一度見せてください。

于 2011-10-08T11:29:42.140 に答える
0

「src/examples/scripts」の下にあるさまざまなスクリプトを見ると、ESAPI.properties ファイルの場所を制御する簡単な方法が 1 つ示されます。(これは ESAPI 2.0 以降用です。)

ESAPI.properties ファイルのコピーが「configuration/esapi」の下にあることがわかります。

于 2011-10-09T05:12:08.237 に答える
0

Resourcesフォルダーの下にjar add propertiesファイルを抽出します。

最初は同じエラーが発生しましたが、プロパティファイルを更新した後、うまくいきました

于 2014-09-30T12:21:24.150 に答える