gpt4 book ai didi

javascript - Symfony 2.7、Twig 和 CKEditor——如何安全地允许某些 HTML 输出?

转载 作者:行者123 更新时间:2023-11-27 23:40:57 25 4
gpt4 key购买 nike

所以我正在使用 Symfony 创建一个博客,人们可以在注册时发表评论。我希望人们能够通过或多或少的 HTML 留下丰富的评论,您可以使用 CKEditor 的标准包(图像、字体样式、 block 引用、表格)以及 YouTube 视频插入这些内容。我一直在 Twig 上使用原始过滤器,以便允许 CKEditor 生成的所有 HTML 显示在评论中。不幸的是,这允许所有 HTML ......所以当每个人都可以进入并发布他们想要的任何内容时,它会导致一个非常不安全的网站。

有没有办法让我既保留 CKEditor 又过滤掉不安全的 HTML/Javascript?在过去,我会简单地实现 BB 代码,这将使我完全控制转换为 HTML 的内容,但 CKEditor 直接生成 HTML...

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

最佳答案

如此有效,您希望将一些 HTML 标签和属性列入白名单?如果是这样,最简单的方法是使用类似 HTML Purifier 的方法。它允许您为允许的 HTML 设置规则。

如果您决定使用它,如果您通读 documentation,设置可能会有点复杂。但像这样:

$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 等问题上恢复干净。

关于javascript - Symfony 2.7、Twig 和 CKEditor——如何安全地允许某些 HTML 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31778648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com