jolimardi / laravel-honeypot
Laravel表单垃圾信息防护,采用蜜罐技术
1.0
2024-06-02 08:45 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
- illuminate/view: ^9.0|^10.0|^11.0
Requires (Dev)
- mockery/mockery: ^1.6
- phpunit/phpunit: ^11
This package is auto-updated.
Last update: 2024-09-02 09:16:48 UTC
README
Laravel Honeypot通过添加一个在表单提交后应该为空(显然机器人会填充)的输入和一个包含页面加载加密时间戳的输入,帮助跟踪页面加载和表单提交期间的延迟(因为机器人会快速提交表单)。这两个输入都对用户隐藏,并且具有随机名称,以防止机器人通过表单垃圾信息攻击。
安装
您可以通过composer安装此包(包将自动注册自己)
composer require jolimardi/laravel-honeypot
可选,您可以发布包的config
和lang
文件
php artisan vendor:publish --provider="WebLogin\LaravelHoneypot\ServiceProvider"
使用方法
您需要在您的表单中添加Blade组件或Blade指令。唯一的参数是您虚假输入的名称(这是一个包会添加随机后缀的基本名称)。显然,不要将其命名为honeypot
。
Blade组件
<form method="POST"> <x-honeypot name="field-name"/> ... </form>
Blade指令
<form method="POST"> @honeypot('field-name') ... </form>
然后像其他任何相同的输入名称的验证规则
一样使用Honeypot
规则
use WebLogin\LaravelHoneypot\Rules\Honeypot; ... $request->validate([ 'title' => ['required', 'max:120'], 'content' => ['required', 'max:600'], 'field-name' => [new Honeypot], ]);
配置
您可以通过发布包的config
来更改默认配置(参见安装部分)。它将在您的配置文件夹中创建一个honeypot.php
文件。
enabled
用于启用或禁用整个蜜罐保护min_seconds
用于选择在提交表单前等待的最小秒数
翻译
您可以通过发布包的lang
来翻译验证消息(参见安装部分),或者您可以直接在lang/your-locale/validation.php
文件中翻译它,通过添加所需的键
'honeypot' => [ 'pot' => "Message when the field that should be empty is filled", 'time' => "Message when the form is submitted too quickly", ],
致谢
灵感来源于https://github.com/msurguy/Honeypot包。
许可
MIT许可证(MIT)。请参阅许可文件以获取更多信息。