Laravel5.*使用Purifier扩展包集成 HTMLPurifier轻松防止XSS跨站攻击
今天我们主要分享在Laravel 5.*中使用mews/purifier扩展包集成HTMLPurifier防止 XSS跨站攻击,我们也知道laravel在安全方面一直也在追求更好,我们在日常的使用中使用{{}}即可轻松防止XSS攻击,但是当我们使用laravel 编写的富文本时(比如文章详情,用户评论等等)我们需要使用{!! !!}让我们的站点解析代码,这时候就需要考虑过滤代码。
HTMLPurifier是基于 PHP 编写的富文本HTML[=过滤器,通常我们可以使用它来防止XSS跨站攻击,更多关于HTMLPurifier的详情请参考HTMLPurifier官网。
一、Purifier安装
Purifier 是在Laravel 5.* 中集成 HTMLPurifier 的扩展包,我们可以通过Composer来安装这扩展:
1、使用composer require安装
composer require mews/purifier
推荐使用如上方法安装,他不会更新其他composer包,节约我们的安装时间
2、使用composer update安装
在composer.js的require中添加"mews/purifier": "~2.0"然后执行composer update即可完成安装
{
"require": {
"mews/purifier": "~2.0",
}
}
二、Purifier配置
在上面完成安装后,我们需要在配置文件config/app.php的providers中注册HTMLPurifier服务提供者:
providers => [
// ...
Mews\Purifier\PurifierServiceProvider::class,
]
然后在aliases中注册Purifier门面:
aliases => [
// ...
Purifier => Mews\Purifier\Facades\Purifier::class,
]
添加完上面的配置,我们要使用自定义的配置,需要发布配置文件到config目录:
php artisan vendor:publish
会生成config/purifier.php配置文件,内容如下代码所示:
return [
encoding => UTF-8,
finalize => true,
cachePath => storage_path(app/purifier),
cacheFileMode => 0755,
settings => [
],
];
三、Purifier的使用
其实使用非常简单,只有一个单一的clean函数,不过要注意,他会直接清楚之间的内容,而不是替换特殊符号。
可以使用辅助函数clean或者使用Purifier门面提供的clean方法:
# 辅助函数
clean(Input::get(inputname));
# 门面提供的clean方法
Purifier::clean(Input::get(inputname));
clean可以传入参数和配置,你可以在应用中进行动态配置,具体查看config/purifier.php文件:
clean(你的内容, array(Attr.EnableID => true));
Purifier::clean(你的内容, array(Attr.EnableID => true));
同时需要预防XSS的内容不光是只能是字符串格式的,比如你想让标题和文章内容都执行clean, 你并不需要执行两次操作,只需要传入一个数组格式即可:
dump($request->msg);
$msg = Purifier::clean(array("msg"=>$request->msg,"title"=>$request->title));
dump($msg);
你会看到如下所示,好的,这就是全部内容了,本文拓展包Github地址
常见问题
- 在你初次使用
Purifier回默认生成一个<p></p>标签,非常方便使用,需要才config/purifier.php中修改参数:AutoFormat.AutoParagraph => false,
更多相关好文
-
laravel中distinct()的使用方法与去重 2017-09-11 -
Laravel将view缓存为静态html,laravel页面静态缓存 2021-10-09 -
[ laravel爬虫实战--基础篇 ] guzzle描述与安装 2017-11-01 -
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 2017-07-18 -
nginx如何查看当前访问的是哪个网址 2025-11-17
热门文章
-
nginx如何查看当前访问的是哪个网址 2025-11-17 -
微信公众号回复菜单点击回复文本 2025-10-24 -
laravel+easywechat6出现No component_verify_ticket found以及修改缓存为redis 2025-09-09 -
nginx 服务器如何查看当前访问的域名 2025-06-10 -
ubuntu+nginx当服务器异常时微信/企业微信/抖音数据重复回调导致服务器崩溃怎么解决? 2025-05-30

Laravel模型更新全表如何实现?