介绍
对于提供了评论功能的博客系统,最大的威胁或许就是垃圾评论,各种铭感词、链接,烦不胜烦。 spatie/laravel-honeypot 创建一个隐藏的 div,其中包含两个字段,即蜜罐字段和加密时间戳,用于标记页面提供给用户的时刻。当包含这些用户不可见的输入的表单提交到您的应用程序时,包附带的自定义验证器会检查蜜罐字段是否为空,并检查用户填写表单所花费的时间。如果表单填写得太快,或者蜜罐字段中输入了值,则此提交很可能来自垃圾邮件机器人。
安装
1
| composer require spatie/laravel-honeypot
|
发布配置文件(可选):
1
| php artisan vendor:publish --provider="Spatie\Honeypot\HoneypotServiceProvider" --tag=honeypot-config
|
使用
1 2 3 4 5 6 7 8 9
| <form method="POST" action="...">
@honeypot
<input type="text" name="my_normal_input" value="">
...
</form>
|
在处理表单提交的路由中使用 ProtectAgainstSpam 中间件。该中间件将拦截任何被困在蜜罐中的请求。如果请求的提交速度超过配置的时间,它也会拦截请求。
1 2 3 4 5 6 7
| use Spatie\Honeypot\ProtectAgainstSpam;
Route::middleware(ProtectAgainstSpam::class)->group(function() {
});
|
全局启用:
1 2 3 4 5
|
->withMiddleware(function (Middleware $middleware): void { $middleware->append(\Spatie\Honeypot\ProtectAgainstSpam::class); })
|
避免在 Laravel 9 中发送垃圾表单 - HiBit