我应该在哪里找到耳朵内多个战争使用的通用 ESAPI.properties 文件?

问题描述 投票:0回答:4

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

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

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

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

java configuration ear esapi
4个回答
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) 在系统属性“

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 版本的原因而提供此选项。

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

现在,也就是说,如果您想在所有 .war 文件中共享单个 ESAPI.properties 文件,我建议使用选项 #2 并将

System
属性“
org.owasp.esapi.resources
”设置为某个公共安全目录他们双方都可以访问。另外,您应该使用完整路径名。


0
投票

答案是将包含属性文件的 esapi 目录放入

src/main/application

在其中一个模块中。这条路径将其内容放在耳朵的根部。


0
投票

我正在使用 java 1.8.0_71 的 Maven 项目上运行 ESAPI。我已将 ESAPI.properties 和validation.properties 放入

src/main/资源

这对我有用:

尝试通过类路径加载 ESAPI.properties。 使用当前线程上下文类加载器通过 CLASSPATH 从“/(根)”成功加载 ESAPI.properties!

尝试通过类路径加载validation.properties。 使用当前线程上下文类加载器通过 CLASSPATH 从“/(根)”成功加载validation.properties!


0
投票

我在使用时遇到问题: 选项 2)在系统属性“org.owasp.esapi.resources”定义的目录内,@Kevin W. Wall 在他的回答中介绍了该属性。 当我在 Spring 应用程序中使用 ESAPI 时,我尝试在启动脚本中使用以下命令调用 ESAPI:

java -jar myJar.jar --spring.config.additional-location=configuration/myConfig.yml -Dorg.owasp.esapi.resources="C:\MyPath\configuration\esapi"
  • 正确的设置是:

    java -Dorg.owasp.esapi.resources="C:\MyPat

© www.soinside.com 2019 - 2024. All rights reserved.