accentinteractive / laravel-blocker
阻止在一定时间内访问特定(利用)URL的恶意机器人用户。
Requires
- php: ^7.3|^7.4|^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阻止的过期时间。
安装
步骤 1: 使用Composer安装此包
composer require accentinteractive/laravel-blocker
步骤 2: 确保注册中间件。
要在所有请求上使用,请将其添加为第一个选项到文件 app/Http/Kernel.php 中 $middlewareGroups
下 web
部分。
protected $middlewareGroups = [ 'web' => [ \Accentinteractive\LaravelBlocker\Http\Middleware\BlockMaliciousUsers::class, ], ];
要在特定请求上使用,请将其添加到任何组或文件 app/Http/Kernel.php 中的 protected $middleware
属性。
protected $middleware = [ \Accentinteractive\LaravelBlocker\Http\Middleware\BlockMaliciousUsers::class, ];
步骤 3: 可选地使用以下命令发布配置文件
php artisan vendor:publish --provider="Accentinteractive\LaravelBlocker\LaravelBlockerServiceProvider" --tag="config"
步骤 4: 没有第四步 :)
用法
此包使用自动发现。它使用一个中间件类来进行检查和阻止。
配置设置
启用检查
您可以在发布的配置文件中启用或禁用URL检查和用户代理检查,或者在.env文件中设置这些值(默认启用)。
URL_DETECTION_ENABLED=true USER_AGENT_DETECTION_ENABLED=true
过期时间
在发布的配置文件中设置阻止过期时间(以秒为单位),或在.env文件中设置此值(默认为3600秒)。
AI_BLOCKER_EXPIRATION_TIME=3600
定义恶意URL
在发布的配置文件中定义恶意URL,或在.env文件中设置此值,用竖线分隔。您只需要使用恶意字符串的一部分。匹配不区分大小写。
示例:设置 wp-admin
将阻止 '/wp-admin', '/index.php/wp-admin/foo' 和 '/?p=wp-admin'。
默认值:call_user_func_array|invokefunction|wp-admin|wp-login|.git|.env|install.php|/vendor
AI_BLOCKER_MALICIOUS_URLS='call_user_func_array|invokefunction|wp-admin|wp-login|.git|.env|install.php|/vendor'
定义恶意用户代理
在发布的配置文件中定义恶意用户代理,或在.env文件中设置此值,用竖线分隔。您只需要使用恶意字符串的一部分。匹配不区分大小写。
示例:设置 seznam
将阻止用户代理 'Mozilla/5.0 (compatible; SeznamBot/3.2-test4; +http://napoveda.seznam.cz/en/seznambot-intro/)'。
AI_BLOCKER_MALICIOUS_USER_AGENTS='dotbot|linguee|seznam|mail.ru'
定义存储类实现
默认情况下,阻止的IP地址存储在缓存中,使用存储实现 \Accentinteractive\LaravelBlocker\Services\BlockedIpStoreCache::class
。
您可以在发布的配置文件中设置您希望使用的存储类,或在.env文件中设置此值。您可以选择以下选项:
- \Accentinteractive\LaravelBlocker\Services\BlockedIpStoreCache
- \Accentinteractive\LaravelBlocker\Services\BlockedIpStoreDatabase
AI_BLOCKER_STORAGE_IMPLEMENTATION_CLASS='\Accentinteractive\LaravelBlocker\Services\BlockedIpStoreCache'
测试
composer test
XDEBUG_MODE=coverage vendor/bin/phpunit tests --coverage-html code-coverage
更新日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全
如果您发现任何安全问题,请通过电子邮件 joost@accentinteractive.nl 而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。
Laravel软件包模板
此软件包是使用Laravel软件包模板生成的。