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() 方法中找到它是如何实现的详细信息,您可以在此处找到:
希望对您有所帮助。 -凯文
只是一个可能相关的小更新。看起来 2.1.0.1 版本不小心破坏了以前的 2.x 搜索顺序(为了支持 ESAPI 的 XML 配置属性)。这将在(尚未确定的)ESAPI 点版本中修复。有关详细信息,请参阅 ESAPI GitHub issue 397。
我在我的项目中添加了一个 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() 方法中找到它是如何实现的详细信息,您可以在此处找到:
希望对您有所帮助。 -凯文
只是一个可能相关的小更新。看起来 2.1.0.1 版本不小心破坏了以前的 2.x 搜索顺序(为了支持 ESAPI 的 XML 配置属性)。这将在(尚未确定的)ESAPI 点版本中修复。有关详细信息,请参阅 ESAPI GitHub issue 397。