artisanbarista/laravel-shield

阻止在一定时间内访问特定(利用)URL的恶意机器人用户。

v4.0.0 2024-09-25 09:28 UTC

README

您的应用程序被恶意请求攻击,尝试利用URL。此包检测这些请求并阻止其IP地址。被阻止的用户在阻止到期之前无法访问您的应用程序。

  1. 阻止类似 /wp-admin?invokefunction&function=call_user_func_array&vars[0]=phpinfo 的利用URL。
  2. 阻止类似 SeznamFlexbotMail.ru 的用户代理。
  3. 设置IP阻止的过期时间。
  4. 设置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包模板生成的。