0

我正在尝试在我的 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 文件夹中添加了 owasp-java-html-sanitizer.jar 和 guava-20.0.jar(所有 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;

请建议。

4

1 回答 1

0

首先,只是检查一下,因为从上面列出的实施更改中它并不明显;您是否在模块清单中包含了新的 JAR?在第 1 步和第 2 步之间。(看看你的错误,我怀疑是这种情况)

那么,你定义的 Nucleus 组件(CustomSanitizer.properties),你能单独实例化它吗?例如,如果您通过组件浏览器导航到组件,您会得到什么dyn/admin?(它是全局的,它应该能够在第一次访问时实例化它)。

然后,如果该组件可以被实例化,那么找出您的 TestigUtil 组件无法访问它的原因。组件的路径是否正确?

于 2019-07-22T16:19:29.047 回答