使用php保护简单所见即所得的最佳方法

使用php保护简单所见即所得的最佳方法,php,security,xss,wysiwyg,Php,Security,Xss,Wysiwyg,我在我的网站上添加了一个简单的所见即所得编辑器。(它只允许B/I/U-不再允许) 我目前将所有内容作为html存储在数据库中,但添加或其他恶意代码很简单) PHP中安全解析此输入的最佳方法是什么? 如何将、等实现为白名单并对其他所有内容进行编码?使用带标签() string strip_标记(string$str[,string$allowed_标记]) 第二个参数是允许标记的列表;只需列出”,其余部分将被剥离 请注意如deceze所述: 此函数不修改您要修改的标记上的任何属性 允许使用允许的_

我在我的网站上添加了一个简单的所见即所得编辑器。(它只允许B/I/U-不再允许)
我目前将所有内容作为html存储在数据库中,但添加
或其他恶意代码很简单)

PHP中安全解析此输入的最佳方法是什么? 如何将
等实现为白名单并对其他所有内容进行编码?

使用
带标签()

string strip_标记(string$str[,string$allowed_标记])

第二个参数是允许标记的列表;只需列出
,其余部分将被剥离

请注意如deceze所述:

此函数不修改您要修改的标记上的任何属性 允许使用允许的_标记,包括样式和onmouseover 恶作剧用户在发布以下文本时可能滥用的属性 将显示给其他用户

因此,它本身并不能提供针对恶意代码的全面保护

HTMLPurifier 我只是想把这个扔出去,可能会受到不可避免的打击。我不会使用
strip_标签
保护您的所见即所得表单永远(除非你想激怒你的用户)

它不会保护您的表单,您可能会破坏用户体验

在他的博客中,他写了一段精彩的文章

我讨厌在博客上发表评论,我的评论是通过像strip_tags()这样的东西传递的,这实际上破坏了我想说的话。这让我想起了使用IM客户端时,它试图识别笑脸并用图像替换它们,这常常使响应难以解读

另一个原因 其他人在另一个答案中也写道,我喜欢:

  $str = "10 appels is <than 12 apples";
  var_dump(strip_tags($str));
我个人不会使用HTMLPurifier以外的任何东西

HTMLPurifier

请在此处尝试演示:


看看这个

这个函数不会修改您允许使用允许的标签的标签上的任何属性,包括调皮用户在发布将显示给其他用户的文本时可能滥用的样式和onmouseover属性。
也许您可以为HTMLPurifier推荐正确的设置?在演示中使用它通常也会破坏12个苹果的示例。这对您来说是如何工作的?我相信您需要收集错误以确保安全。那应该行吗?是的,那是我找到的唯一的环境,我只是不太明白。为什么要“收集错误”…?:)但请让您的HTMLPurifier安装保持最新,就像任何软件一样。这是一个很难解决的问题,由于浏览器和HTML的使用随着时间的推移而变化,利用漏洞的情况一直存在。HTMLPurifier可能并不完美,但可能仍然允许使用脚本-以下是几个月前的一组最新漏洞。
string '10 appels is ' (length=13)