Web 项目下 ESAPI.properties 的正确位置

Correct location for ESAPI.properties under web project

我在我的项目中添加了一个 OWASP ESAPI 库。目前我遇到了在哪里找到 ESAPI.properties 文件的问题。这个项目稍后应该部署在我无权访问的几台服务器上。所以在我看来,没有办法自定义org.owasp.esapi.resources变量,我不能把它放在用户主目录下。所以我唯一可以放这个文件的地方是 SystemResource Directory/resourceDirectory 但它在哪里?我已经尝试放置这些文件:

.esapi/ESAPI.properties
esapi/ESAPI.properties
ESAPI.properties

进入这些位置:

$CATALINA_HOME/webapps/<MY_PROJECT>/
$CATALINA_HOME/webapps/<MY_PROJECT>/WEB-INF
$CATALINA_HOME/webapps/<MY_PROJECT>/WEB-INF/classes
$CATALINA_HOME/webapps/<MY_PROJECT>/META-INF

但是在所有这些地方我都得到一个错误: Not found in SystemResource Directory/resourceDirectory: .esapi\ESAPI.properties

那么我应该在哪里找到这个文件?这是一个遗留项目(只有 Eclipse 项目,没有 Maven),它的结构非常丑陋。没有像 /src/main/resources 这样的目录,在我看来这个 ESAPI.properties 文件应该位于其中。我已经创建了这个目录,但是在将 WAR 存档部署到 Tomcat?

之后,这个文件最终应该在哪里

ESAPI.properties 文件应位于 esapi 目录下的 CLASSPATH

假设您有一个模块以 2 种形式部署到 war:作为 jar,或展开为 类。 只需在使用 OWASP ESAPI 第 3 方的模块的源代码中创建一个目录。

从 eclipse 的角度来看,文件只需要在 CLASSPATH 中,无论您是否使用 maven。使用 maven 时,maven resources 目录被 m2eclipse 插件转换为 eclipse sources 目录。

示例(使用 eclipse 标准源代码结构):

src
|---com
|   |---module
|   |   |---SomeClass.java
|---esapi
|   |---ESAPI.properties

也许这会有所帮助。它描述了在 ESAPI 2.x 中实现的查找 ESAPI.properties 文件的搜索顺序: http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/reference/DefaultSecurityConfiguration.html

我认为该文档是最新的,但您可以在 DefaultSecurityConfiguration.java 的 loadConfiguration() 方法中找到它是如何实现的详细信息,您可以在此处找到:

https://static.javadoc.io/org.owasp.esapi/esapi/2.0.1/org/owasp/esapi/reference/DefaultSecurityConfiguration.html

希望对您有所帮助。 -凯文

只是一个可能相关的小更新。看起来 2.1.0.1 版本不小心破坏了以前的 2.x 搜索顺序(为了支持 ESAPI 的 XML 配置属性)。这将在(尚未确定的)ESAPI 点版本中修复。有关详细信息,请参阅 ESAPI GitHub issue 397