OWASP 消毒剂产生意想不到的结果

OWASP sanitizer generates unexpected results

我正在使用 OWASP sanitizer 对输入数据进行清理。以下是我使用的政策

             return new HtmlPolicyBuilder()
                    .allowElements("a", "label", "h1", "h2", "h3", "h4", "h5", "h6",
                            "p", "i", "b", "u", "strong", "em", "small", "big", "pre", "code",
                            "cite", "samp", "sub", "sup", "strike", "center", "blockquote",
                            "hr", "br", "col", "font", "span", "div", "img",
                            "ul", "ol", "li", "dd", "dt", "dl", "tbody", "thead", "tfoot",
                            "table", "td", "th", "tr", "colgroup", "fieldset", "legend")
                    .allowAttributes("src", "alt", "align", "title", "hspace", "vspace").onElements("img")
                    .allowAttributes("href", "target").onElements("a")
                    .allowAttributes("border", "cellpadding", "cellspacing", "style", "class").onElements("table")
                    .allowAttributes("colspan", "rowspan", "style", "class", "align", "valign").onElements("td")
                    .allowAttributes("border", "height", "width").globally()
                    .allowStandardUrlProtocols()
                    .requireRelNofollowOnLinks()
                    .allowStyling()
                    .toFactory();

因此,当我输入 <a>test</a> 时,我希望它会 return 得到相同的结果,因为我允许使用“a”标签。但是,它 return 只是“测试”。这是我的 gradle

编译组:'com.googlecode.owasp-java-html-sanitizer',名称:'owasp-java-html-sanitizer',版本:'20191001.1'

我也试过 disallowAttributes("script")。它也没有用。有任何想法吗?谢谢

So when my input is test, I expect it will return me the same result, cause I am allowing "a" tag. However, it returns "test" only.

有些元素如果没有提供属性,则默认情况下是不允许的。只需将以下子句添加到策略构建器:

.allowWithoutAttributes("a")

它将从跳过 afontimginput 的内部 HtmlPolicyBuilder.skipIfEmpty 实例集中删除 a 元素,默认情况下 span(参见 HtmlPolicyBuilder.DEFAULT_SKIP_IF_EMPTY)。