Pet*_*end 5 java resources owasp esapi
我一直在尝试评估OWASP ESAPI库,但一直有问题只是让它正确初始化.我为ESAPI.properties和validation.properties设置了一个资源文件夹,这些文件夹从类路径加载而没有问题.但是antisamy-esapi.xml文件没有从classpath加载,我发现2010年有一个提到这个的bug.我得到的错误是:
尝试通过文件I/O加载antisamy-esapi.xml作为资源文件.在'org.owasp.esapi.resources'目录中找不到或文件不可读:C:\ Users\mydir\resin-pro-4.0.27\antisamy-esapi.xml在SystemResource Directory/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(),它现在似乎正常工作.
小智 1
我设法通过为 esapi 资源添加以下行来使其工作:
System.setProperty("org.owasp.esapi.resources", "src/main/resources");
Run Code Online (Sandbox Code Playgroud)
至少现在我可以使用instance.getValidSafeHTML
但是,当部署到 Web 服务器时,它就不起作用了。我猜想加载补丁需要antisamy-esapi.xml从类路径加载。
| 归档时间: |
|
| 查看次数: |
2523 次 |
| 最近记录: |