dav*_*and 2 java ear configuration esapi
我有两个模块将使用具有相同属性文件的ESAPI(ESAPI和validation.properties).
这些模块输出到耳朵中包含的战争.
我在其中一个war文件中有属性文件,在服务器启动时可以找到它们.另一个war文件似乎工作正常,并没有抱怨它无法在日志中找到属性文件.
我正在使用ESAPI来清理html和url参数 - 我想知道我是否甚至需要这些属性文件才能被第二个模块访问,或者任何一个,因为没有配置,一切都是使用默认值完成的.
小智 6
首先,让我描述一下ESAPI 2.x如何寻找ESAPI.properties文件.
ESAPI SecurityConfiguration接口的参考实现类是
org.owasp.esapi.reference.DefaultSecurityConfiguration
有了这个默认的实现,比如资源ESAPI.properties和
Validation.properties可放在几个位置,这是搜索的顺序如下:
1)在通过调用设置的目录中SecurityConfiguration.setResourceDirectory().例如,
ESAPI.securityConfiguration().setResourceDirectory("C:\myApp\resources");
当然,如果使用此技术,则必须在使用ESAPI.properties(其中大多数)进行任何其他ESAPI调用之前完成.
2)在System属性" 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"目录.请注意,由于Java使用多个类加载器,并且如果在给定的应用程序服务器中有多个应用程序,它们可能使用不同的类路径.因此,通常不建议使用此选项,但出于与早期ESAPI 1.4.x版本向后兼容的原因而提供此选项.
现在,也就是说,如果你想在所有.war文件中共享一个ESAPI.properties文件,我建议使用选项#2并将System属性" org.owasp.esapi.resources" 设置为两个可以访问的公共安全目录.此外,您应该使用完整路径名称.