尝试使用ESAPI但是获取错误

我正在尝试使用ESAPI.jar为我的Web应用程序提供安全性。基本上我刚开始使用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.(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 

ESAPI.properties文件中应包含3行以上的行。

http://code.google.com/p/owasp-esapi-java/source/browse/trunk/configuration/esapi/ESAPI.properties

根据我的经验,ESAPI.properties文件需要与esapi.jar位于同一文件夹中,或者需要编译到资源目录中的jar中。

 /resources/ESAPI.properties 

我相信任何一个都应该奏效。 如果ESAPI找不到该文件,则在其他位置查找该文件。

代码就在第612行: http : //code.google.com/p/owasp-esapi-java/source/browse/trunk/src/main/java/org/owasp/esapi/reference/DefaultSecurityConfiguration。 java的

我自己只是在努力解决这个问题。

  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抛出exception。 对于每个需要更新版本的jar,如commons集合或log4j。 在堆栈跟踪的底部,它将引用有问题的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。 这是完整的完整文件。

参考SecurityConfiguration管理ESAPI在单个位置使用的所有设置。 在此参考实现中,可以将资源放在多个位置,按以下顺序搜索:

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的“ca​​talina”脚本中,您可以将JAVA_OPTS变量设置为上面的-D字符串。

3)在System.getProperty(“user.home”)+“/。esapi”目录内(支持向后兼容)或System.getProperty(“user.home”)+“/ esapi”目录内。

4)类路径上的第一个“.esapi”或“esapi”目录。 (前者是为了向后兼容。)

在遇到这个问题并查看安装文档(esapi-xxx-dist \ documentation \ esapi4java-core-xx-install-guide.pdf)后,我发现了一个非常有用的部分,详细说明了属性文件可以在任何地方,只要一个vm flag( -Dorg.owasp.esapi.resources=path" )指向一个特定的目录。例如,如果我将文件粘贴在项目目录根目录下的”resources“文件夹中,那么标志将是:

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

你能把你的文件(带有这个名字)放在:

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

并再次向我们展示内容和例外。

查看’src / examples / scripts’下的各种脚本,它们将向您显示一种控制ESAPI.properties文件所在位置的简便方法。 (这适用于ESAPI 2.0或更高版本。)

您将在“configuration / esapi”下找到ESAPI.properties文件的副本。

-kevin墙

  1. 提取esapi jar
  2. org.owasp.esapi下创建一个名为resources的文件夹
  3. ESAPI.properties复制到org.owasp.esapi.resources
  4. 构建和部署

解压缩资源文件夹下的jar add属性文件。

最初获得相同的错误,更新属性文件后,它对我有用

感谢您提供信息

-Dorg.owasp.esapi.resources = “路径\到\项目\ ROOT \资源”

这是一个很好的信息来源,并解决了我的问题

我也有同样的问题。 我用一点James Drinkard解决方案解决了这个问题。 我基本上做的是创建一个名为ESAPI的新文件夹,并添加了ESAPI.properties文件,Validation.properties和ESAPI-AccessControlPolicy.xml。 并将其存档到一个jar文件中,并添加到WebContet / WEB-INF下的lib文件夹中,并将其构建到路径中并且工作正常。

*要将其存档到jar文件中,我使用了windows命令移动ESAPI ESAPI.jar