5

我一直在尝试评估 OWASP ESAPI 库,但是在让它正确初始化时遇到了问题。我为 ESAPI.properties 和 validation.properties 设置了一个资源文件夹,它们是从类路径加载的,没有问题。但是 antisamy-esapi.xml 文件不是从类路径加载的,我发现 2010 年的一个错误提到了这一点。我得到的错误是:

尝试通过文件 I/O 将 antisamy-esapi.xml 作为资源文件加载。在“org.owasp.esapi.resources”目录中找不到或文件不可读:C:\Users\mydir\resin-pro-4.0.27\antisamy-esapi.xml 在 SystemResource 目录/resourceDirectory 中找不到:.esapi\antisamy -esapi.xml 在 'user.home' (C:\Users\mydir) 目录中找不到:C:\Users\mydir\esapi\antisamy-esapi.xml

我正在使用此库将应用程序部署到树脂。我已经尝试将 xml 文件手动放置在上面的所有位置中,最终唯一有效的是我的主目录,这对于生产部署来说效果不佳。

我还遵循了在其他地方找到的建议,该建议说设置 -Dorg.owasp.esapi.resources 属性。这也不起作用,但更有趣的是,错误并没有改变,这让我认为该设置由于某种原因没有被选中。

关于该文件需要在我的项目中的位置的任何指针,以便在部署到容器后正确加载?

提前致谢。

更新:

因此,通过挖掘代码,似乎有专门的函数用于加载 ESAPI.properties,这就是为什么该文件能够从部署到容器的标准资源(或任何其他 src 目录)目录加载的原因。然而,antisamy-esapi.xml 的加载函数只是检查 user.home 下的特定目录、配置的自定义目录或通过 ClassLoader.getSystemResource() 的结果。不知道为什么这些例程是分开的。在搞砸了几个小时后,我失去了耐心并复制了 DefaultSecurityConfiguration.java 并更正了 getResourceFile() 方法以使用与 loadConfigurationFromClasspath() 相同的查找代码。然后我用这个类调用 ESAPI.override() ,它现在似乎工作正常。

4

1 回答 1

1

我设法通过为 esapi 资源添加以下行来使其工作:

System.setProperty("org.owasp.esapi.resources", "src/main/resources");

DefaultSecurityConfiguration.java

至少现在我可以使用instance.getValidSafeHTML

但是,当一个部署到 Web 服务器时它不会工作。antisamy-esapi.xml我猜想从类路径加载要加载的补丁是必需的。

于 2014-02-19T19:56:43.617 回答