在 java 代码中使用 PolicyFactory.sanitize 后,HtmlPolicyBuilder href 未出现在 <u > 标签中
HtmlPolicyBuilder href is not coming in <u >tag after using PolicyFactory.sanitize in java code
<u href="javascript:toggleTable('*****')" onMouseOver="this.style.color='red'" onMouseOut="this.style.color='#000000'">*****</u>
清理 href 属性后 th 标签下的上方元素未出现,如下所示:
<u onmouseover="this.style.color='red'" onmouseout="this.style.color='#000000'">*****</u>
下面是我试图在 u 元素下允许 href 属性的代码片段:
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();
我在 table 和 tr 元素上也遇到了同样的问题。样式属性不在 table 和 tr 元素下。
任何 suggestion/help 表示赞赏。
提前致谢。
正在删除 href
属性,因为它没有允许的协议。如果 .allowUrlProtocols("href")
更改为 .allowUrlProtocols("javascript")
则允许。
允许 javascript
URL,或 onMouseOver
和 onMouseOut
属性将允许执行脚本并容易受到 XSS 攻击。
相反,您可以更改设计。鼠标悬停样式不需要 JavaScript。可以通过 CSS :hover
选择器来完成。
如上面的答案一样,在 .allowUrlProtocols("javascript")
中添加 javascript
将允许通过,但是您仍然会在 [=15= 中获得 UTF 编码的 "("
& ")"
] 因为 "("
& ")"
进入特殊字符。
你的输出看起来像 javascript:toggleTable0028'*****'0029
要使其正常工作,您必须将其替换为字符串函数 replace。
sanitizer.sanitize(HTML).replace("0028", "(").replace("0029",")");
<u href="javascript:toggleTable('*****')" onMouseOver="this.style.color='red'" onMouseOut="this.style.color='#000000'">*****</u>
清理 href 属性后 th 标签下的上方元素未出现,如下所示:
<u onmouseover="this.style.color='red'" onmouseout="this.style.color='#000000'">*****</u>
下面是我试图在 u 元素下允许 href 属性的代码片段:
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();
我在 table 和 tr 元素上也遇到了同样的问题。样式属性不在 table 和 tr 元素下。
任何 suggestion/help 表示赞赏。 提前致谢。
正在删除 href
属性,因为它没有允许的协议。如果 .allowUrlProtocols("href")
更改为 .allowUrlProtocols("javascript")
则允许。
允许 javascript
URL,或 onMouseOver
和 onMouseOut
属性将允许执行脚本并容易受到 XSS 攻击。
相反,您可以更改设计。鼠标悬停样式不需要 JavaScript。可以通过 CSS :hover
选择器来完成。
如上面的答案一样,在 .allowUrlProtocols("javascript")
中添加 javascript
将允许通过,但是您仍然会在 [=15= 中获得 UTF 编码的 "("
& ")"
] 因为 "("
& ")"
进入特殊字符。
你的输出看起来像 javascript:toggleTable0028'*****'0029
要使其正常工作,您必须将其替换为字符串函数 replace。
sanitizer.sanitize(HTML).replace("0028", "(").replace("0029",")");