我有两个模块将使用具有相同属性文件的ESAPI(ESAPI和validation.properties)。
这些模块输出到包含在耳中的战争。
我在其中一个war文件中有属性文件,在服务器启动时可以找到它们。另一个war文件似乎工作正常,并没有抱怨它无法在日志中找到属性文件。
我正在使用ESAPI来清理html和url参数 - 我想知道我是否需要第二个模块可以访问这些属性文件,或者任何一个,因为没有配置,所有内容都是使用默认值完成的。
答案 0 :(得分:6)
首先,让我描述一下ESAPI 2.x如何查找其ESAPI.properties文件。
ESAPI的SecurityConfiguration
接口的参考实现类是
org.owasp.esapi.reference.DefaultSecurityConfiguration
使用此默认实现,ESAPI.properties
和Validation.properties
等资源
SecurityConfiguration.setResourceDirectory()
可以放在几个位置,按以下顺序搜索:
1)在通过调用ESAPI.securityConfiguration().setResourceDirectory("C:\myApp\resources");
设置的目录中。如,
org.owasp.esapi.resources
当然,如果您使用此技术,则必须在使用ESAPI.properties(其中大部分都是)的任何其他ESAPI调用之前完成。
2)在系统属性“java
”定义的目录中。您可以在java -Dorg.owasp.esapi.resources="C:\temp\resources" ...
命令行上进行如下设置(例如):
System.getProperty( "user.home" ) + "/.esapi"
您可能必须将此添加到启动Web服务器的启动脚本中。例如,对于Tomcat,在启动Tomcat的“catalina”脚本中,您可以将JAVA_OPTS变量设置为上面的“-D”字符串。
3)在
内
System.getProperty( "user.home" ) + "/esapi"
目录(支持向后兼容)或
内
.esapi
4)类路径上遇到的第一个“esapi
”或“System
”目录。请注意,由于Java使用多个类加载器,并且如果在给定的应用程序服务器中有多个应用程序,它们可能使用不同的类路径。因此,通常不建议使用此选项,但出于与早期ESAPI 1.4.x版本向后兼容的原因而提供此选项。
现在,如果您要在所有.war文件中共享一个ESAPI.properties文件,我建议使用选项#2并设置org.owasp.esapi.resources
属性“pyenv
“到一些他们都可以访问的常见安全目录。此外,您应该使用完整路径名称。
答案 1 :(得分:0)
答案是将包含属性文件的esapi目录放在
中src/main/application
在其中一个模块中。这条路径将它的内容放在耳根处。
答案 2 :(得分:0)
我正在使用java 1.8.0_71在maven项目上运行ESAPI。我已将ESAPI.properties和validation.properties放在
中的src /主/资源
这对我有用:
尝试通过类路径加载ESAPI.properties。 使用当前线程上下文类加载器从'/(root)'通过CLASSPATH成功加载ESAPI.properties!
尝试通过类路径加载validation.properties。 使用当前线程上下文类加载器从'/(root)'通过CLASSPATH成功加载validation.properties!