以下是我的代码示例
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
内是否安全?
答案 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转义它,就像您想要的那样。