根据专家建议,用户内容(replyContent
)包含在<pre>
标记中以缓解XSS,如下所示。但为什么每个人都说下面的代码避免了XSS?
无论如何,我试图注入</pre><script>alert("XSS");</script><pre>
,但它成功阻止了尝试并显示了代码片段。
那么,它是否足够(已经有代码去掉像&lt;,&gt;,/,'和&amp;等特殊字符)或有没有办法绕过这种保护?
任何想法??
代码段:
$row = $("<tr class='wp_replies_tr'></tr>");
...
$msgColumn5 = $("<td width='112' class='wp_msgCol5'></td>");
$preTag = $("<pre class='wp_reply_content'></pre>");
$pre.text( replyContent );
$msgColumn5.html($pre);
$row.append($msgColumn5);
答案 0 :(得分:2)
$pre.text( replyContent );
将输入转换为HTML,因此可以阻止注入(doc)。 $msgColumn5.html($pre);
使用已经过清理过的$pre
。