我正在尝试在ATG(9.3)应用程序中添加OWASP HTMLSanitizer API,但出现以下异常:
**** Error Wed Jan 16 01:35:45 IST 2019 1547582745139
/ Unable to resolve component /test/util/TestingUtil
java.lang.NoClassDefFoundError: org/owasp/html/HtmlPolicyBuilder
实施迄今所做的更改:
1)在我的Commerce / lib文件夹(所有jar所在的位置)中添加了owasp-java-html-sanitizer.jar和guava-20.0.jar
2)创建了CustomSanitizer组件,即CustomSanitizer.properties文件,其内容为:
$class=org.owasp.html.HtmlPolicyBuilder
$scope=global
3)将以上创建的组件添加到需要清理URL的现有组件中。现有组件属性文件(TestingUtil.properties)
$class=com.util.TestingUtil
htmlPolicyBuilder=/test/util/HTMLPolicyBuilder
4)TestingUtil.java:
private HtmlPolicyBuilder htmlPolicyBuilder;(setters and getters)
public String filterUrl(String url) {
String filteredURL = url;
PolicyFactory policy = htmlPolicyBuilder
.allowElements("a")
.allowUrlProtocols("https")
.allowAttributes("href").onElements("a")
.requireRelNofollowOnLinks()
.toFactory();
filteredURL = policy.sanitize(url);
}
return filteredURL;
请提出建议。
答案 0 :(得分:0)
首先,仅检查一下,因为从上面列出的实现更改中看不出来;您是否在模块清单中包括了新的JAR?在第1步和第2步之间。(查看您的错误,我怀疑是这种情况)
然后,您已定义的Nucleus组件(CustomSanitizer.properties),您可以单独实例化它吗?例如,如果您通过dyn/admin
中的组件浏览器导航到该组件,将会得到什么? (它是全局的,它应该能够在首次访问时实例化它。)
然后,如果可以实例化该组件,请弄清楚为什么您的TestigUtil组件无法访问它。组件的路径正确吗?