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")
它将从跳过 a
、font
、img
、input
的内部 HtmlPolicyBuilder.skipIfEmpty
实例集中删除 a
元素,默认情况下 span
(参见 HtmlPolicyBuilder.DEFAULT_SKIP_IF_EMPTY
)。
我正在使用 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")
它将从跳过 a
、font
、img
、input
的内部 HtmlPolicyBuilder.skipIfEmpty
实例集中删除 a
元素,默认情况下 span
(参见 HtmlPolicyBuilder.DEFAULT_SKIP_IF_EMPTY
)。