middlewares / firewall
提供IP过滤的中间件
v2.0.3
2022-10-04 09:47 UTC
Requires
- php: ^7.2 || ^8.0
- middlewares/utils: ^3.0
- mlocati/ip-lib: ^1.18
- psr/http-server-middleware: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- laminas/laminas-diactoros: ^2.3
- oscarotero/php-cs-fixer-config: ^1.0
- phpstan/phpstan: ^0.12 || ^1.0
- phpunit/phpunit: ^8|^9
- squizlabs/php_codesniffer: ^3.0
README
提供IP过滤的中间件。
要求
- PHP >= 7.2
- 一个PSR-7 http库
- 一个PSR-15中间件分发器
安装
此包可以通过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。