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 に答える