我在我的网站上添加了一个简单的所见即所得编辑器。 (它只允许B / I / U - 不再)
我目前将所有内容存储为我的数据库中的html - 但是,添加<a onclick='...'>
或其他恶意代码很简单
PHP中最好的方法是安全地解析输入?
如何将<b></b>
<i></i>
等实施为白名单并对其他所有内容进行编码?
答案 0 :(得分:12)
我只是把这个扔出去,可能会得到不可避免的抨击。我不会使用strip_tags
来确保您的WYSIWYG形式...... 永远(除非您想要惹恼您的用户)。
它无法保护您的表单,并且您可能杀死您的用户体验。
Chris Shiftlett在他的博客文章中写了一篇精彩的段落
我厌恶评论博客,我的评论通过像strip_tags()这样的东西传递,有效地破坏了我想说的内容。它让我想起了使用IM客户端试图识别表情符号并用图像替换它们,这往往使得回复很难解读。
另一个答案中的其他人也写了这个我喜欢的内容:
$str = "10 appels is <than 12 apples";
var_dump(strip_tags($str));
我得到的输出是:
string '10 appels is ' (length=13)
我个人不会使用HTMLPurifier以外的任何
在此处试用演示:http://htmlpurifier.org/demo.php
看看这个similar question
答案 1 :(得分:0)
使用strip_tags()
。 http://php.net/manual/en/function.strip-tags.php
string strip_tags(string $ str [,string $ allowable_tags])
第二个参数是允许标签列表;只列出'<b><i><u>'
,剩下的就会被删除。
请注意,如deceze所述:
此功能不会修改您的标签上的任何属性 允许使用allowable_tags,包括样式和onmouseover 恶意用户在发布文本时可能会滥用的属性 将向其他用户显示。
因此它本身并不能完全保护恶意代码!