jolimardi/laravel-honeypot

Laravel表单垃圾信息防护,采用蜜罐技术

1.0 2024-06-02 08:45 UTC

This package is auto-updated.

Last update: 2024-09-02 09:16:48 UTC


README

Laravel Honeypot通过添加一个在表单提交后应该为空(显然机器人会填充)的输入和一个包含页面加载加密时间戳的输入,帮助跟踪页面加载和表单提交期间的延迟(因为机器人会快速提交表单)。这两个输入都对用户隐藏,并且具有随机名称,以防止机器人通过表单垃圾信息攻击。

Collision logo

安装

您可以通过composer安装此包(包将自动注册自己)

composer require jolimardi/laravel-honeypot

可选,您可以发布包的configlang文件

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)。请参阅许可文件以获取更多信息。