我一直在尝试评估OWASP库,但一直存在问题,只是让它正确地初始化。我为ESAPI.properties和validation.properties设置了一个资源文件夹,这些文件夹是从类路径加载的,没有问题。但是,antisamy-esapi.xml文件并不是从类路径加载的,我在2010年就发现了一个提到这一点的bug。我所犯的错误是:
试图通过文件I/O将antisamy-esapi.xml加载为资源文件。在“org.owasp.esapi.resources”目录中找不到的文件或不可读的文件:org.owasp.esapi.resources目录/资源目录中没有找到的SystemResource:.esapi\antisamy-esapi.xml不在'user.home‘目录中(C:\Users\mydir)目录:C:\Users\esapi.xml目录中没有找到
我正在使用这个库将应用程序部署到树脂上。我已经尝试过手动将xml文件放置在上面的所有位置,最后唯一起作用的是我的主目录,它在生产部署中不能很好地工作。
我还遵循了在其他地方找到的关于设置-Dorg.owasp.esapi.resources属性的建议。这也不起作用,但更有趣的是,错误并没有改变,这使我认为设置没有被选择的原因。
在我的项目中需要找到这个文件的位置上的任何指针,这样一旦部署到容器中就可以正确地加载它了?
提前谢谢。
更新:
因此,从代码中可以看出,加载ESAPI.properties有专门的功能,这就是为什么该文件能够从部署到容器的标准资源(或任何其他src dir)目录中加载。但是,antisamy-esapi.xml的加载函数只是检查user.home下的一个特定目录,一个已配置的自定义目录,或者通过ClassLoader.getSystemResource()的结果。不知道为什么这些例程是分开的。经过几个小时的混乱之后,我失去了耐心,复制了DefaultSecurityConfiguration.java,并更正了getResourceFile()方法,使其使用与loadConfigurationFromClasspath()相同的查找代码。然后我用这个类调用ESAPI.override(),它现在似乎正常工作了。
发布于 2014-02-19 19:56:43
通过为esapi资源添加以下行,我成功地使其工作:
System.setProperty("org.owasp.esapi.resources", "src/main/resources");DefaultSecurityConfiguration.java
至少现在我可以使用instance.getValidSafeHTML了
然而,当一个部署到web服务器时,它将无法工作。我想修补程序需要加载antisamy-esapi.xml才能从类路径加载。
https://stackoverflow.com/questions/12014097
复制相似问题