nickurt / laravel-abuseipdb
适用于Laravel 10.x/11.x的AbuseIpDb
2.6
2024-03-09 14:47 UTC
Requires
- php: ^8.2
- ext-json: *
- guzzlehttp/guzzle: ^7.8.1
- laravel/framework: ^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.5.12
README
安装
使用composer安装此包
composer require nickurt/laravel-abuseipdb
复制AbuseIpDb插件的配置文件
php artisan vendor:publish --provider="nickurt\AbuseIpDb\ServiceProvider" --tag="config"
配置
可以在.env文件(或直接在config/abusedbip.php文件中)使用环境变量来设置AbuseIpDb信息
ABUSEIPDB_APIKEY=MY_UNIQUE_APIKEY
示例
验证规则 - IsSpamIp
您可以在Form-Request中使用隐藏字段aip
来验证请求是否有效
$validator = validator()->make(['aip' => 'aip'], ['aip' => [new \nickurt\AbuseIpDb\Rules\IsSpamIp( request()->ip(), 100 )]]);
IsSpamIp
需要一个ip
和一个可选的days
参数来验证请求。
手动使用 - IsSpamIp
$isSpamIp = \AbuseIpDb::setIp('8.8.8.8')->isSpamIp(); // Same $isSpamIp = abuseipdb()->setIp('8.8.8.8')->isSpamIp(); $isSpamIp = abuseipdb()->isSpamIp('8.8.8.8'); // Cache the result for 10 minutes (default 10 seconds) abuseipdb()->setCacheTTL(600); // Lower the required abuse confidence score from 100 (max) to 90% abuseipdb()->setSpamThreshold(90); // Report an IP in categories 18 (Brute-Force) and 22 (SSH) // For categories see https://www.abuseipdb.com/categories $updatedAbuseConfidence = abuseipdb()->reportIp('18,22', '127.0.0.1', 'SSH login attempts with user root.'); // Catch exceptions try { abuseipdb()->isSpamIp('invalid-ip'); } catch(\nickurt\AbuseIpDb\AbuseIpDbException $exception) { dd($exception->getMessage()); // "The ip address must be a valid IPv4 or IPv6 address (e.g. 8.8.8.8 or 2001:4860:4860::8888)." } try { // Do it twice (happens eg if hacker accesses two invalid urls and each reports this IP) // Both commands do the same in just two different ways abuseipdb()->setIp('127.0.0.2')->reportIp('18,22'); abuseipdb()->reportIp('18,22', '127.0.0.2'); } catch(\nickurt\AbuseIpDb\AbuseIpDbException $exception) { dd($exception->getMessage()); // "You can only report the same IP address (`127.0.0.2`) once in 15 minutes." }
事件
您可以监听IsSpamIp
事件,例如,如果您想在应用程序中记录IsSpamIp
请求
IsSpamIp 事件
当请求IP发送垃圾信息的频率超过阈值时,将触发此事件。
测试
使用以下命令运行测试
composer test