java - 尝试使用 OWASP ESAPI 时找不到 antisamy-esapi.xml

标签 java resources owasp esapi

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

Attempting to load antisamy-esapi.xml as resource file via file I/O. Not found in 'org.owasp.esapi.resources' directory or file not readable: C:\Users\mydir\resin-pro-4.0.27\antisamy-esapi.xml Not found in SystemResource Directory/resourceDirectory: .esapi\antisamy-esapi.xml Not found in 'user.home' (C:\Users\mydir) directory: C:\Users\mydir\esapi\antisamy-esapi.xml

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

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

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

提前致谢。

更新:

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

最佳答案

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

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

DefaultSecurityConfiguration.java

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

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

关于java - 尝试使用 OWASP ESAPI 时找不到 antisamy-esapi.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12014097/

相关文章:

java - Spring Rest API和无后缀的静态Web内容访问

java - 从命令行覆盖 Maven 插件中的属性

maven-2 - 如何在 Maven 中过滤资源,用依赖项 artifactId 替换?

java - 验证方法的良好命名约定是什么?

未找到 META-INF/resources 中的资源并返回 404

java - OSWAP ESAPI 的 Sybase 编解码器

node.js - npm 的包审计使用 OWASP 吗?

java - 为 Jersey 客户端使用带有 LoggingFeature 的自定义日志过滤器。

java - 如何对 Google 帐户进行身份验证并将其添加到 AWS Cognito 用户池?