PHP站点阻止XSS有点太好了


PHP site preventing XSS a bit too wel

我有一个博客系统,随机的人可以在这里发表评论。如果顽皮的人试图发布Javascript,就会发生这种情况:

bla bla <script>alert("Hacked")</script>

变成

bla bla &lt;script&gt;alert(&quot;Hacked&quot;)&lt;/script&gt;

我更希望帖子保持代码的完整性,以防有人需要发布HTML。我如何让第二行看起来像第一行,而不做任何事情?我目前的过滤方式是:

$safeMessage = htmlspecialchars($reply['message'], ENT_QUOTES | ENT_HTML401, 'UTF-8');
echo "$safeMessage";

我能想到的最好的方法是使用HTML净化器,并只指定您想要允许的HTML子集。查看此处的文档