将净化包与 Laravel 一起使用后,不显示 ID

IDs are not displayed after using the purify package with Laravel

提问人:AvraSys 提问时间:7/9/2023 最后编辑:IGPAvraSys 更新时间:7/9/2023 访问量:28

问:

我有一个 Laravel 网站,我正在使用 v6 包来清理和验证前端的内容。但是我有一点问题。当我在 html 标签中有一个 id 时,它会删除它,或者更确切地说,它只是不显示它。stevebauman/purify

这是我到目前为止尝试过的:

  1. 像这样更新了允许的.HTMLconfig/purify.php
'HTML.Allowed' => 'h1[id],h2[id],h3[id],h4[id],h5[id],h6[id],b,strong,blockquote,code,pre[class|id],i,em,a[href|title|id],ul,ol,li,p[style|id],br,span[id],img[width|height|alt|src|class|id]',
  1. 我还在配置文件中添加了这一行:
'Attr.AllowedFrameTargets' => array('_blank', '_self', '_parent', '_top', 'id'),
  1. 在我添加了类:app/Providers/AppServiceProvider.php
public function register()
{
    $this->app->register(\Stevebauman\Purify\PurifyServiceProvider::class);
}
  1. 我还确保清空缓存php artisan config:cache

我在我的视图中显示内容,如下所示:

{!! \Purify::clean($post->content) !!}

不幸的是,这些 ID 不会显示在前端。

php laravel htmlpurifier

评论

0赞 OMi Shah 7/9/2023
php artisan config:cache将缓存配置而不是清除!!请改为打电话。cache:clear
0赞 IGP 7/9/2023
config:cache之前确实清除了缓存。
0赞 AvraSys 7/9/2023
为了确定,我已经尝试了所有缓存清除命令,但它没有区别。

答:

0赞 pinkgothic 7/9/2023 #1

默认情况下,HTML Purifier 不允许属性。您需要通过额外的切换来显式允许它们:Attr.EnableIDid

允许在 HTML 中使用 ID 属性。默认情况下,这是禁用的,因为如果没有正确的配置,用户输入很容易通过指定周围 HTML 上已有的 ID 来破坏网页的验证。如果您不介意谨慎行事,请启用此指令,但我强烈建议您也考虑将您使用的 ID (%Attr.IDBlacklist) 列入黑名单,或为所有用户提供的 ID 添加前缀 (%Attr.IDPrefix)。