一些用户生成的文本(可能包含脚本/代码)将向公众展示。如果我只是过滤掉所有<pre>
和</pre>
标记,并将结果文本用<pre>
和</pre>
括起来,是否有可能执行用户提交的脚本?
请举例说明如何破解这种保护方案。
答案 0 :(得分:3)
过滤掉
<pre>
并用<pre>
封闭是否安全?
没有
...用户提交的脚本是否有可能被执行?
是的,脚本将执行。您可以自己尝试,只需将其放在页面中:
<pre><script>alert("Hi there");</script></pre>
显示alert
。
如果您想要显示用户生成的内容,第一个步骤是将所有&
更改为&
,然后将所有<
更改为{{1 }}
但最好将内容与白名单进行解析,并实际遗漏任何您不想包含的内容。