在 Laravel 应用程序中,自定义验证规则通常放置在服务提供者(Service Provider)中。
以下是将自定义 xss_clean
验证规则放置在服务提供者的步骤:
- 创建一个新的服务提供者 :
如果你的应用程序还没有自定义的服务提供者,你可以创建一个。在app/Providers
目录下创建一个新的 PHP 文件,例如AppServiceProvider.php
(如果还没有的话)。 - 注册自定义验证规则 :
在你的服务提供者中的register
方法或者boot
方法中注册自定义验证规则。通常推荐在boot
方法中注册,因为它在所有服务提供者被注册之后被调用。
以下是代码示例:
php
// app/Providers/AppServiceProvider.php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use HTMLPurifier;
use Illuminate\Support\Facades\Validator;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Validator::extend('xss_clean', function ($attribute, $value, $parameters, $validator) {
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
return $purifier->purify($value) === $value;
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
// 注册其他服务
}
}
确保你的服务提供者在 config/app.php
文件中的 providers
数组中被注册:
php
'providers' => [
// 其他服务提供者...
App\Providers\AppServiceProvider::class,
],
将自定义验证规则放在服务提供者中有几个好处:
- 组织性:将自定义验证逻辑集中在一个地方,便于维护和管理。
- 可重用性:一旦定义,你可以在整个应用程序中的任何地方使用这个验证规则。
- 遵循框架结构 :这是 Laravel 推荐的方式来扩展框架的功能。
最后,不要忘记在composer.json
文件中添加htmlpurifier/htmlpurifier
作为依赖,并运行composer install
来安装 HTMLPurifier 库。这样,你就可以在 Laravel 应用程序中使用自定义的xss_clean
验证规则来防止 XSS 攻击了。