HtmlPolicyBuilder href不会出现<;u>;在java代码中使用PolicyFactory.sanitize后的标记
表和tr元素也面临同样的问题。样式属性不在表和tr元素下 任何建议/帮助都将不胜感激。HtmlPolicyBuilder href不会出现<;u>;在java代码中使用PolicyFactory.sanitize后的标记,java,xss,owasp,cross-site,html-sanitizing,Java,Xss,Owasp,Cross Site,Html Sanitizing,表和tr元素也面临同样的问题。样式属性不在表和tr元素下 任何建议/帮助都将不胜感激。 提前感谢。正在删除href属性,因为它没有允许的协议。如果将.allowUrlProtocols(“href”)更改为.allowUrlProtocols(“javascript”),则允许这样做 允许javascripturl,或onMouseOver和onMouseOut属性将允许执行脚本,并且容易受到XSS攻击 相反,您可以更改设计。鼠标悬停样式不需要JavaScript。这可以通过CSS:悬停选择器来
提前感谢。正在删除
href
属性,因为它没有允许的协议。如果将.allowUrlProtocols(“href”)
更改为.allowUrlProtocols(“javascript”)
,则允许这样做
允许javascript
url,或onMouseOver
和onMouseOut
属性将允许执行脚本,并且容易受到XSS攻击
相反,您可以更改设计。鼠标悬停样式不需要JavaScript。这可以通过CSS
:悬停选择器来完成。作为上面的答案,在中添加javascript
。allowUrlProtocols(“javascript”)
将允许通过,但在哪里仍然可以得到UTF编码的“(
&”)
在javascript:toggleTable('*****')
作为(
)
进入特殊字符
您的输出看起来像javascript:toggleTable0028'*****'0029
要使其工作,您必须用字符串函数replace替换它
PolicyFactory html = new HtmlPolicyBuilder()
.allowElements("u")
.allowAttributes("href", "onMouseOver", "onMouseOut").onElements("u")
.allowTextIn("u")
.allowCommonBlockElements()
.allowCommonInlineFormattingElements()
.allowStandardUrlProtocols()
.allowUrlProtocols("href")
.allowStyling()
.requireRelNofollowOnLinks()
.allowAttributes("href").globally()
.toFactory();
<u onmouseover="this.style.color='red'" onmouseout="this.style.color='#000000'">*****</u>
PolicyFactory html = new HtmlPolicyBuilder()
.allowElements("u")
.allowAttributes("href", "onMouseOver", "onMouseOut").onElements("u")
.allowTextIn("u")
.allowCommonBlockElements()
.allowCommonInlineFormattingElements()
.allowStandardUrlProtocols()
.allowUrlProtocols("href")
.allowStyling()
.requireRelNofollowOnLinks()
.allowAttributes("href").globally()
.toFactory();
sanitizer.sanitize(HTML).replace("0028", "(").replace("0029",")");