我应该在哪里找到耳内多次战争使用的常见ESAPI.properties文件?

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

3)里面

System.getProperty( "user.home" ) + "/.esapi"

目录(支持向后兼容)或内部

System.getProperty( "user.home" ) + "/esapi"

4)类路径上遇到的第一个" .esapi"或" esapi"目录.请注意,由于Java使用多个类加载器,并且如果在给定的应用程序服务器中有多个应用程序,它们可能使用不同的类路径.因此,通常不建议使用此选项,但出于与早期ESAPI 1.4.x版本向后兼容的原因而提供此选项.

一旦ESAPI找到可以读取的有效属性文件(例如,ESAPI.properties),它就会停止搜索其他文件.

现在,也就是说,如果你想在所有.war文件中共享一个ESAPI.properties文件,我建议使用选项#2并将System属性" org.owasp.esapi.resources" 设置为两个可以访问的公共安全目录.此外,您应该使用完整路径名称.