2017-08-28 27 views
0

所以我使用TinyMCE编辑器,并通过使用htmlspecialchars()来处理获取文本区域中的内容,这很好,但我对使用所见即所得编辑器的另一方面有点困惑......内容输出部分。如何正确地转义HTML编辑器内容?

我使用HTML净化器输出的内容,但是从我的理解,我只是在做例如:

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

我只用p标签进行测试,但是这是否意味着我我将不得不经历TinyMCE使用的所有内容,并将其添加为允许的内容?还是有更好的方法来解决这个问题,所见即所得编辑器的安全输出?

+1

值得一提的是,HTML Purifier使用的_default_白名单相当安全。除非您想要比默认值更严格,否则您可以跳过设置“HTML.Allowed”。 :)(我不知道这个类是否作为答案 - 它与你的问题略有直接关系,但我想你可能想知道) – pinkgothic

+0

是的,我刚刚使用了HTML.Allowed,以便TinyMCE的所有功能将在稍后输出内容时显示。谢谢(你的)信息! – Erdss4

回答

1

是的,你需要设置所有你想要的标签,用逗号分隔。您还可以指定属性用括号括起来允许:

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

我想一个更好的理解,printDefinition可以提供帮助。