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

Lup*_*upo 7 php security xss wysiwyg

我在我的网站上添加了一个简单的所见即所得编辑器.(它只允许B/I/U - 没有更多)
我目前将所有内容存储为我的数据库中的html - 但是atm它很容易添加<a onclick='...'>或其他恶意代码)

什么是PHP的最佳方式来安全地解析输入?如何实现<b></b> <i></i>等白名单和编码其他所有内容?

Lay*_*yke 12

HTMLPurifier

我只是想把它扔到那里,可能会得到不可避免的抨击.我不会strip_tags用来保证你的WYSIWYG表格...... 永远(除非你想惹恼你的用户).

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

Chris Shiftlett在他的博客文章中写了一篇优秀的段落

我厌恶评论博客,我的评论通过像strip_tags()这样的东西传递,有效地破坏了我想说的内容.它让我想起了使用IM客户端试图识别表情符号并用图像替换它们,这往往使得回复难以破译.

另一个原因

另一个回答中的其他人也写了这个我喜欢的:

  $str = "10 appels is <than 12 apples";
  var_dump(strip_tags($str));
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

string '10 appels is ' (length=13)
Run Code Online (Sandbox Code Playgroud)

我个人不会使用HTMLPurifier以外的任何东西

HTMLPurifier

HTMLPurifier

试试这里的演示:http://htmlpurifier.org/demo.php

看看这个类似的问题