1

我正在使用 JSoup 来清理一些不受信任的 HTML。我发现如果我打电话

String html = "<div id='foo'><script type='text/javascript'>alert('hello');</script></div>";
String cleanedHtml = Jsoup.clean(html, Whitelist.relaxed());

此时cleanedHtml

<div><div>

所以<script>标签已被正确删除,但神秘的id是,<div>. 有什么好的理由应该删除它还是一个错误?

4

1 回答 1

6

默认情况下,该id属性已被删除;将其添加为允许的属性:

Whitelist whitelist = Whitelist.relaxed().addAttributes("div", "id");
System.out.println(Jsoup.clean(html, whitelist));

=> <div id="foo"></div>

它是一个错误吗?不是 AFAIC;它在源代码中。不过,IMO 存在文档错误。

是否有“任何充分的理由”为什么应该删除它?不确定那个,但是像这样的属性不是结构性的:删除它不会改变 DOM。这就是白名单的问题——它们明确允许,并且必须根据您的确切需求进行策划。

于 2013-01-13T13:29:01.010 回答