web-dev-qa-db-ja.com

ESAPIを使用しようとしているがエラーが発生する

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
18
AngelsandDemons

ESAPI.propertiesファイルには3行を超える必要があります。例を参照してください:

https://web.archive.org/web/20150904064147/http://code.google.com:80/p/owasp-esapi-Java/source/browse/trunk/configuration/esapi/ESAPI。プロパティ

私の経験では、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/reference/DefaultSecurityConfiguration.Java

22
Jason Dean

私はこれを自分で苦労しました。

  1. C:/ users/myname /ディレクトリにesapiというフォルダーを作成し、ESAPI.properties、validation.properties、およびESAPI-AccessControlPolicy.xmlをロードしました。これにより、ファイルが見つからないというエラーがすべてなくなりました。 ESAPIはいくつかの場所でファイルを探します。ところでWindows 7 64ビットを実行しています。
  2. その後、jarファイルの一部を更新する必要がありました。私はこれを最初からやるべきでしたが、知りませんでした。私はこのエラーを受け取っていました:AccessControllerクラス(org.owasp.esapi.reference.DefaultAccessController)CTORは例外をスローしました。 commonsコレクションやlog4jなど、より新しいバージョンである必要のあるすべてのjarに対して。スタックトレースの下部では、問題のあるjarを参照します。

Esapi libディレクトリから新しいjarを追加すると、すべてがうまくいきました!

私はコンソールで最後にこのメッセージを受け取りました:

ESAPI.accessController found: org.owasp.esapi.reference.DefaultAccessController@1cb8deef

注:ESAPI_en_US.propertiesファイルがありますが、このファイルには数行しかありません。\esapi-2.1.0-dist\src\test\resources\esapi\ESAPI.propertiesにあるファイルを使用するだけです。これが完全な完全ファイルです

3
James Drinkard

参照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」ディレクトリ。 (前者は後方互換性のためです。)

1
Petr Jung

この問題が発生し、インストールドキュメント(esapi-xxx-dist\documentation\esapi4Java-core-xx-install-guide.pdf)を確認した後、プロパティファイルをどこにでも配置できるという詳細な非常に有用なセクションが見つかりました。国旗 (-Dorg.owasp.esapi.resources=path")特定のディレクトリを指します。たとえば、プロジェクトディレクトリのルートにある「resources」フォルダーにファイルを固定すると、フラグは次のようになります。

-Dorg.owasp.esapi.resources="path\to\project\root\resources"
1
schil227
  1. Esapi jarを抽出します
  2. org.owasp.esapiの下にresourcesという名前のフォルダーを作成します
  3. ESAPI.propertiesorg.owasp.esapi.resourcesにコピーします
  4. ビルドとデプロイ
0

リソースフォルダーの下にあるjar add propertiesファイルを抽出します。

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

0
Shobhit Agarwal

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

ESAPI.propertiesファイルのコピーは「configuration/esapi」の下にあります。

0
Kevin Wall

(この名前の)ファイルを次の場所に配置できますか?

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

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

0
yoprogramo

情報を提供してくれてありがとう

-Dorg.owasp.esapi.resources = "path\to\project\root\resources"

これは良い情報源であり、私の問題を解決しました

0
Shankar P

私も同じ問題を抱えていました。ジェームス・ドリンカードのソリューションを少し使用して解決しました。基本的にESAPIという名前の新しいフォルダーを作成し、ESAPI.propertiesファイル、Validation.properties、およびESAPI-AccessControlPolicy.xmlを追加しました。そして、それをjarファイルにアーカイブし、WebContet/WEB-INFの下のlibフォルダーに追加し、パスにビルドし、機能しました。

* jarファイルにアーカイブするには、Windowsコマンドmove ESAPI ESAPI.jarを使用しました

0
Vasu J