artisanbarista / laravel-shield
阻止在一定时间内访问特定(利用)URL的恶意机器人用户。
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.5
- illuminate/console: ^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/filesystem: ^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: 4.*|5.*|6.*|^7.0|^8.0
- phpunit/phpunit: ^8.4|^9.0|^10.0
README
您的应用程序被恶意请求攻击,尝试利用URL。此包检测这些请求并阻止其IP地址。被阻止的用户在阻止到期之前无法访问您的应用程序。
- 阻止类似
/wp-admin
和?invokefunction&function=call_user_func_array&vars[0]=phpinfo
的利用URL。 - 阻止类似
Seznam
、Flexbot
和Mail.ru
的用户代理。 - 设置IP阻止的过期时间。
- 设置IP白名单/黑名单。
安装
步骤1:通过composer安装包
composer require artisanbarista/laravel-shield
步骤2:确保注册中间件。
要在所有请求中使用,请将其添加到文件app/Http/Kernel.php中$middlewareGroups
下的web
部分的第一选项。
protected $middlewareGroups = [ 'web' => [ \Artisanbarista\LaravelShield\Http\Middleware\BlockMaliciousUsers::class, ], ];
要在特定请求中使用,请将其添加到任何组或文件app/Http/Kernel.php中的protected $middleware
属性。
protected $middleware = [ \Artisanbarista\LaravelShield\Http\Middleware\BlockMaliciousUsers::class, ];
可选:使用以下命令发布配置文件
php artisan vendor:publish --provider="Artisanbarista\LaravelShield\LaravelShieldServiceProvider" --tag="config"
用法
此包使用自动发现。该包使用一个中间件类来执行检查和阻止。
配置设置
启用盾牌
您可以在发布的配置文件中启用或禁用盾牌,或在.env中设置值(默认启用)。
SHIELD_PROTECTION_ENABLED=true
过期时间
在发布的配置文件中设置阻止过期时间(以秒为单位),或在.env中设置此值(默认3600秒)。
SHIELD_EXPIRATION_TIME=3600
最大尝试次数
设置在阻止IP之前允许的最大恶意请求次数。默认为5。您可以在配置或.env中更改它。
SHIELD_MAX_ATTEMPTS=5
定义恶意URL
在发布的配置文件中定义恶意URL。您只需使用恶意字符串的一部分。匹配不区分大小写。
示例:设置wp-admin
将阻止'/wp-admin'、'/index.php/wp-admin/foo'和'/?p=wp-admin'。
定义恶意用户代理
在发布的配置文件中定义恶意用户代理。
示例:设置seznam
将阻止用户代理'Mozilla/5.0 (compatible; SeznamBot/3.2-test4; +http://napoveda.seznam.cz/en/seznambot-intro/)'。
定义存储类实现
默认情况下,阻止的IP存储在缓存中,使用存储实现\Artisanbarista\LaravelShield\Services\BlockedIpStoreRateLimiter::class
。
您可以创建您希望使用的不同存储类,并在配置文件中替换它,或通过在.env中设置此值。
- \Artisanbarista\LaravelShield\Services\BlockedIpStoreRateLimiter
SHIELD_STORAGE_IMPLEMENTATION_CLASS='\Artisanbarista\LaravelShield\Services\BlockedIpStoreRateLimiter'
测试
composer test
XDEBUG_MODE=coverage vendor/bin/phpunit tests --coverage-html code-coverage
更改日志
请参阅CHANGELOG了解最近更改的信息。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。
Laravel包模板
此包是用Laravel包模板生成的。