Jsoup停止在<pre> tag</pre>内呈现代码

时间:2015-02-15 04:31:41

标签: jsoup

以下是我的代码示例

    String unsafe = 
      "<p onClick=''><a href='http://example.com/' onclick='stealCookies()'>Link</a></p><pre><iframe></iframe></pre><img src=''/>";
    String safe = Jsoup.clean(unsafe, Whitelist.basic());        
    System.out.println(safe);

这里我希望将代码保存在pre标记内,以便用户可以输入他的代码。 但jsoup正在iframe标记内转义pre。如何将代码保存在pre内?

将代码保存在pre内是否安全?

1 个答案:

答案 0 :(得分:1)

不,这完全不安全。不要这样做。

HTML解析器或渲染器不会特别处理<pre>标记。它只是由用户代理样式表应用了以下CSS:

pre {
    font-family: monospace;
    white-space: pre-wrap;
}

<pre>中存在的HTML标记完全正常 - 例如:

<pre>
    Here is preformatted text
    with <b>bold</b>
    and <a href="about:blank">links</a>
    and an iframe:
    <iframe src="about:blank" width="150" height="100"></iframe>
</pre>

如果您想在<pre>标记中显示用户内容,则需要HTML转义它,就像您想要的那样。