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

时间:2016-08-24 18:53:55

标签: java configuration ear esapi

我有两个模块将使用具有相同属性文件的ESAPI(ESAPI和validation.properties)。

这些模块输出到包含在耳中的战争。

我在其中一个war文件中有属性文件,在服务器启动时可以找到它们。另一个war文件似乎工作正常,并没有抱怨它无法在日志中找到属性文件。

我正在使用ESAPI来清理html和url参数 - 我想知道我是否需要第二个模块可以访问这些属性文件,或者任何一个,因为没有配置,所有内容都是使用默认值完成的。

3 个答案:

答案 0 :(得分:6)

首先,让我描述一下ESAPI 2.x如何查找其ESAPI.properties文件。

ESAPI的SecurityConfiguration接口的参考实现类是

  

org.owasp.esapi.reference.DefaultSecurityConfiguration

使用此默认实现,ESAPI.propertiesValidation.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的“ca​​talina”脚本中,您可以将JAVA_OPTS变量设置为上面的“-D”字符串。

3)在

  

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

目录(支持向后兼容)或

  

.esapi

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

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

现在,如果您要在所有.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!