accentinteractive/laravel-blocker

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

v1.0.0 2023-07-10 08:19 UTC

This package is auto-updated.

Last update: 2024-09-10 10:48:53 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

您的应用程序被恶意机器人用户和尝试利用URL的访问者攻击。本包会检测这些用户并阻止它们的IP地址。被阻止的用户将在阻止到期之前无法访问您的应用程序。

  1. 阻止如 /wp-admin?invokefunction&function=call_user_func_array&vars[0]=phpinfo 这样的利用URL。
  2. 阻止如 SeznamFlexbotMail.ru 这样的用户代理。
  3. 设置IP阻止的过期时间。

安装

步骤 1: 使用Composer安装此包

composer require accentinteractive/laravel-blocker

步骤 2: 确保注册中间件。

要在所有请求上使用,请将其添加为第一个选项到文件 app/Http/Kernel.php 中 $middlewareGroupsweb 部分。

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软件包模板生成的。