gpt4 book ai didi

jakarta-mail - OWASP HTML Sanitizer 允许在 HTML 中使用冒号

转载 作者:行者123 更新时间:2023-12-02 21:43:14 28 4
gpt4 key购买 nike

我怎样才能允许:登录经过净化的 HTML?我用它来清理生成 java 邮件时的 HTML 代码。此代码有一个内联图像内容 ID,如 <img src=\"cid:image\" height=\"70\" width=\"70\" /> 。 sanitizer 后,src属性未包含在清理后的 html 中。

    PolicyFactory IMAGES = new HtmlPolicyBuilder().allowUrlProtocols("http", "https")
.allowElements("img")
.allowAttributes("src").matching(Pattern.compile("^cid[:][\\w]+$"))
.onElements("img")
.allowAttributes("border", "height", "width").onElements("img")
.toFactory();

String html = "<img src=\"cid:image\" height=\"70\" width=\"70\" />";
final String sanitized = IMAGES.sanitize(html);

System.out.println(sanitized);

以上代码的输出为:

<img height="70" width="70" />

最佳答案

为什么它不起作用

或者更确切地说,为什么它工作得“太好了”

默认情况下,HtmlPolicyBuilder 不允许在 src 元素中使用 URL 协议(protocol)。这可以防止诸如

之类的注入(inject)
<img src="javascript:alert('xss')"/>

这可能会导致在 javascript: 之后执行脚本(在本例中为 alert('xss'))

还有其他协议(protocol)(在其他元素上)可能会导致类似问题:

即使它不使用javascript协议(protocol),仍然可以注入(inject)base64编码的XSS注入(inject):

<object src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="/> 

<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">Click me</a>

因此,HtmlPolicyBuilder 假定任何包含冒号的属性值(在某些属性中)都应被视为危险。

<小时/>

如何修复它:

您必须使用allowUrlProtocols method明确告诉HtmlPolicyBuilder允许cid“协议(protocol)” :

    PolicyFactory IMAGES = new HtmlPolicyBuilder().allowUrlProtocols("http", "https")
.allowElements("img")
.allowUrlProtocols("cid") // Specifically allow "cid"
.allowAttributes("src").matching(Pattern.compile("^cid[:][\\w]+$"))
.onElements("img")
.allowAttributes("border", "height", "width").onElements("img")
.toFactory();

String html = "<img src=\"cid:image\" height=\"70\" width=\"70\" />";
final String sanitized = IMAGES.sanitize(html);

System.out.println(sanitized);

输出:

<img src="cid:image" height="70" width="70" />

关于jakarta-mail - OWASP HTML Sanitizer 允许在 HTML 中使用冒号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32856950/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com