我正在尝试使用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.<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
答案 0 :(得分:22)
ESAPI.properties文件中应包含3行以上的行。例如见:
根据我的经验,ESAPI.properties文件需要与esapi.jar位于同一文件夹中,或者需要编译到资源目录中的jar中。
/resources/ESAPI.properties
我相信任何一个都应该奏效。如果ESAPI找不到该文件,则在其他位置查找该文件。
该代码在第620行附近:
答案 1 :(得分:3)
我自己就是在努力解决这个问题。
当我从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。这是完整的完整文件。
答案 2 :(得分:1)
遇到这个问题并查看安装文档(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"
答案 3 :(得分:1)
参考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的“catalina”脚本中,您可以将JAVA_OPTS变量设置为上面的-D字符串。
3)在System.getProperty(“user.home”)+“/。esapi”目录内(支持向后兼容)或System.getProperty(“user.home”)+“/ esapi”目录内。
4)类路径上的第一个“.esapi”或“esapi”目录。 (前者是为了向后兼容。)
答案 4 :(得分:0)
您可以将您的文件(使用此名称)放入:
D:\Eclipse-Workspace\Test\ESAPI.properties
再次向我们展示内容和例外。
答案 5 :(得分:0)
查看“src / examples / scripts”下的各种脚本,它们将向您显示一种控制ESAPI.properties文件所在位置的简便方法。 (这适用于ESAPI 2.0或更高版本。)
您会在'configuration / esapi'下找到ESAPI.properties文件的副本。
答案 6 :(得分:0)
org.owasp.esapi
ESAPI.properties
复制到org.owasp.esapi.resources
答案 7 :(得分:0)
提取罐子 在资源文件夹下添加属性文件。
最初得到相同的错误,更新了它为我工作的属性文件
答案 8 :(得分:0)
感谢您提供信息
-Dorg.owasp.esapi.resources =&#34;路径\到\项目\根\资源&#34;
这是一个很好的信息来源,并解决了我的问题
答案 9 :(得分:0)
我也有同样的问题。我用一点James Drinkard解决方案解决了这个问题。我基本上做的是创建一个名为ESAPI的新文件夹,并添加了ESAPI.properties文件,Validation.properties和ESAPI-AccessControlPolicy.xml。并将其存档到一个jar文件中并添加到WebContet / WEB-INF下的lib文件夹中,并将其构建到路径中并且它可以工作。
*要将其存档到jar文件中,我使用了windows命令移动ESAPI ESAPI.jar