提问人:AvraSys 提问时间:7/9/2023 最后编辑:IGPAvraSys 更新时间:7/9/2023 访问量:28
将净化包与 Laravel 一起使用后,不显示 ID
IDs are not displayed after using the purify package with Laravel
问:
我有一个 Laravel 网站,我正在使用 v6 包来清理和验证前端的内容。但是我有一点问题。当我在 html 标签中有一个 id 时,它会删除它,或者更确切地说,它只是不显示它。stevebauman/purify
这是我到目前为止尝试过的:
- 像这样更新了允许的.HTML
config/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]',
- 我还在配置文件中添加了这一行:
'Attr.AllowedFrameTargets' => array('_blank', '_self', '_parent', '_top', 'id'),
- 在我添加了类:
app/Providers/AppServiceProvider.php
public function register()
{
$this->app->register(\Stevebauman\Purify\PurifyServiceProvider::class);
}
- 我还确保清空缓存
php artisan config:cache
我在我的视图中显示内容,如下所示:
{!! \Purify::clean($post->content) !!}
不幸的是,这些 ID 不会显示在前端。
答:
0赞
pinkgothic
7/9/2023
#1
默认情况下,HTML Purifier 不允许属性。您需要通过额外的切换来显式允许它们:Attr.EnableID:id
允许在 HTML 中使用 ID 属性。默认情况下,这是禁用的,因为如果没有正确的配置,用户输入很容易通过指定周围 HTML 上已有的 ID 来破坏网页的验证。如果您不介意谨慎行事,请启用此指令,但我强烈建议您也考虑将您使用的 ID (%Attr.IDBlacklist) 列入黑名单,或为所有用户提供的 ID 添加前缀 (%Attr.IDPrefix)。
评论
php artisan config:cache
将缓存配置而不是清除!!请改为打电话。cache:clear
config:cache
之前确实清除了缓存。