middlewares/firewall

提供IP过滤的中间件

v2.0.3 2022-10-04 09:47 UTC

This package is auto-updated.

Last update: 2024-08-30 12:09:17 UTC


README

Latest Version on Packagist Software License Testing Total Downloads

提供IP过滤的中间件。

要求

安装

此包可以通过Composer以middlewares/firewall安装和自动加载。

composer require middlewares/firewall

示例

Dispatcher::run([
    (new Middlewares\Firewall(['123.0.0.*']))
        ->blacklist([
            '123.0.0.1',
            '123.0.0.2',
        ])
]);

用法

构造函数接受一个包含白名单IP的数组。 查看允许的IP格式

$firewall = new Middlewares\Firewall([
    '127.0.0.1',
    '198.168.0.*',
]);

可选地,您可以将一个Psr\Http\Message\ResponseFactoryInterface作为第二个参数提供,以创建错误响应(403)。如果未定义,将使用Middleware\Utils\Factory自动检测。

$responseFactory = new MyOwnResponseFactory();

$firewall = new Middlewares\Firewall($whitelist, $responseFactory);

黑名单

黑名单IP。IP格式与白名单相同。

$whitelist = [
    '127.0.0.1',
    '198.168.0.*',
];
$blacklist = [
    '192.168.0.50',
];

$firewall = (new Middlewares\Firewall($whitelist))->blacklist($blacklist);

ipAttribute

默认使用REMOTE_ADDR服务器参数来获取客户端IP。如果您想使用请求属性,请使用此选项。与任何IP检测中间件结合使用很有用,例如client-ip

Dispatcher::run([
    //detect the client ip and save it in client-ip attribute
    new Middlewares\ClientIP(),

    //use that attribute
    (new Middlewares\Firewall(['123.0.0.*']))
        ->ipAttribute('client-ip')
]);

请参阅CHANGELOG获取有关最近更改的更多信息,以及CONTRIBUTING获取贡献详细信息。

MIT许可证(MIT)。有关更多信息,请参阅LICENSE