Php 如何正确地转义HTML编辑器内容?

Php 如何正确地转义HTML编辑器内容?,php,html,xss,wysiwyg,htmlpurifier,Php,Html,Xss,Wysiwyg,Htmlpurifier,因此,我使用TinyMCE编辑器,并通过使用htmlspecialchars()处理文本区域中的内容,这很好,但在使用所见即所得编辑器的另一面,我有点困惑。。。内容输出部分 我正在使用HTML净化器输出内容,但据我所知,我刚刚做了一些工作,例如: $purifierConfig = HTMLPurifier_Config::createDefault(); $purifierConfig->set('HTML.Allowed', 'p'); $Purifier = new HTMLPuri

因此,我使用TinyMCE编辑器,并通过使用
htmlspecialchars()
处理文本区域中的内容,这很好,但在使用所见即所得编辑器的另一面,我有点困惑。。。内容输出部分

我正在使用HTML净化器输出内容,但据我所知,我刚刚做了一些工作,例如:

$purifierConfig = HTMLPurifier_Config::createDefault();
$purifierConfig->set('HTML.Allowed', 'p');
$Purifier = new HTMLPurifier($purifierConfig);
$input = $Purifier->purify($input);

我只测试了p标签,但这是否意味着我必须检查TinyMCE使用的所有东西,并在允许的情况下添加它?或者,有没有更好的方法通过所见即所得编辑器的安全输出来解决此问题?

是的,您需要设置所有允许的标记,并用逗号分隔。还可以通过用括号括起来指定允许哪些属性:

$purifierConfig = HTMLPurifier_Config::createDefault();
$purifierConfig->set('HTML.Allowed', 'p,a[href],b,i,strong,em');
$Purifier = new HTMLPurifier($purifierConfig);
$input = $Purifier->purify($input);

我想,为了更好地理解,可以帮助您。

就其价值而言,HTML净化器使用的默认白名单是相当安全的。您可以跳过设置“HTML.Allowed”,除非您希望比默认设置更严格。:)(我不知道这个类是否作为答案-它与你的问题有点正交,但我想你可能还是想知道。)是的,我只是使用了HTML.Allowed,以便在稍后输出内容时显示TinyMCE的所有功能。谢谢你的信息!