一些用户生成的文本(可能包含脚本/代码)将向公众展示。如果我过滤掉所有 <pre>
和</pre>
标记并用 <pre>
将结果文本括起来和</pre>
,用户提交的脚本有机会被执行吗?
请给我一个如何破解这个保护方案的例子。
最佳答案
Is it safe just filtering out
<pre>
and enclosing with<pre>
?
没有。
...are there any chance user submitted script be executed?
是的,脚本将被执行。您可以自己尝试一下,只需将其放在页面中即可:
<pre><script>alert("Hi there");</script></pre>
alert
显示。
如果您想显示用户生成的内容,第一步是更改所有 &
至&
然后全部<
至<
.
但最好根据白名单解析内容,并实际上忽略任何您不想包含的内容。
关于javascript - 过滤掉 <pre> 并用 <pre> 括起来是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097254/