Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript symfony2.7、Twig和CKEditor——如何安全地允许一些HTML输出?_Javascript_Html_Symfony_Ckeditor_Twig - Fatal编程技术网

Javascript symfony2.7、Twig和CKEditor——如何安全地允许一些HTML输出?

Javascript symfony2.7、Twig和CKEditor——如何安全地允许一些HTML输出?,javascript,html,symfony,ckeditor,twig,Javascript,Html,Symfony,Ckeditor,Twig,所以我正在用Symfony写一个博客,人们可以在注册时留下评论。我希望人们能够留下丰富的评论,或多或少的HTML,你可以插入使用CKEditor标准包(图像,字体样式,块引号,表格)和YouTube视频。我一直在Twig上使用原始过滤器,以允许CKEditor生成的所有HTML显示在评论上。不幸的是,这允许在所有HTML中。。。因此,当每个人都可以进来发布他们想要的任何东西时,这就形成了一个非常不安全的网站 有没有一种方法可以让我既保留CKEditor,又过滤掉不安全的HTML/Javascri

所以我正在用Symfony写一个博客,人们可以在注册时留下评论。我希望人们能够留下丰富的评论,或多或少的HTML,你可以插入使用CKEditor标准包(图像,字体样式,块引号,表格)和YouTube视频。我一直在Twig上使用原始过滤器,以允许CKEditor生成的所有HTML显示在评论上。不幸的是,这允许在所有HTML中。。。因此,当每个人都可以进来发布他们想要的任何东西时,这就形成了一个非常不安全的网站

有没有一种方法可以让我既保留CKEditor,又过滤掉不安全的HTML/Javascript?在过去,我只需实现BB代码,这将使我完全控制转换为HTML的内容,但CKEditor直接生成HTML


解决此问题的最佳方法是什么?

您希望将一些HTML标记和属性列为白名单吗?如果是这样的话,最简单的方法是使用类似的东西,它允许您为允许的HTML设置规则

如果您决定使用它,请通读以下内容,设置可能会有点复杂:

$config = \HTMLPurifier_Config::createDefault();
$config->set('Cache.DefinitionImpl', null);
$config->set('Attr.AllowedFrameTargets', [ '_blank' ]);
$config->set('Attr.AllowedRel', [ 'nofollow' ]);
$config->set('HTML.Allowed', 'h1,h2,h3,h4,h5,h6,p,blockquote,div,hr,img[src|alt],ul,ol,li,br,strong,b,em,i,span,a[href|target|rel],table,thead,tbody,tr,th,td,*[class|style]');

$purifier = new \HTMLPurifier($config);
return $purifier->purify($userEnteredHtml);

是我在许多项目中使用过的,所有这些项目都经过笔试,并且在XSS等方面都没有问题。

不久前我有一个类似的问题:非常有趣。我可以看到这样的东西被集成到我的自定义“所见即所得”表单类型中:)这非常有用。非常感谢。