m6web/firewall

此包已弃用且不再维护。未建议替代包。

提供IP过滤功能的库

维护者

详细信息

github.com/M6Web/Firewall

源代码

问题

安装次数: 713 016

依赖项: 10

建议者: 1

安全性: 0

星标: 62

关注者: 33

分支: 24

v1.0.3 2019-10-15 08:29 UTC

This package is auto-updated.

Last update: 2022-04-12 15:22:53 UTC


README

此PHP 5.4+库提供IP过滤功能。
可以使用很多过滤器
还可以自定义错误处理。

安装

在您的 composer.json 文件中添加此行

{
    "require": {
        "m6web/firewall": "dev-master"
    }
}

更新您的供应商

$ composer update m6web/firewall

使用方法

基本用法

use M6Web\Component\Firewall\Firewall;

$whiteList = array(
    '127.0.0.1',
    '192.168.0.*',
);

$blackList = array(
    '192.168.0.50',
);

$firewall = new Firewall();

$connAllowed = $firewall
    ->setDefaultState(false)
    ->addList($whiteList, 'local', true)
    ->addList($blackList, 'localBad', false)
    ->setIpAddress('195.88.195.146')
    ->handle()
;

if (!$connAllowed) {
    http_response_code(403); // Forbidden
    exit();
}

在此示例中,只有以 192.168.0 开头的IP(但不包括 192.168.0.50)和 127.0.0.1 将被防火墙允许。
在其他所有情况下,handle() 返回 false。

  • setDefaultState(false) 定义默认防火墙响应(可选 - 默认为 false),
  • addList($whiteList, 'local', true) 定义 $whiteList 列表,称为 local 作为允许(true),
  • addList($blackList, 'localBad', false); 定义 $blackList 列表,称为 localBad 作为拒绝(false)。

条目格式

类型 语法 详细信息
IPV6 ::1 简写表示法
IPV4 192.168.0.1
范围 192.168.0.0-192.168.1.60 包括从 192.168.0.0192.168.0.255 的所有IP
以及从 192.168.1.0198.168.1.60
通配符 192.168.0.* 192.168.0 开头的IP
等同于IP范围 192.168.0.0-192.168.0.255
子网掩码 192.168.0.0/255.255.255.0 192.168.0 开头的IP
等同于 192.168.0.0-192.168.0.255192.168.0.*
CIDR掩码 192.168.0.0/24 192.168.0 开头的IP
等同于 192.168.0.0-192.168.0.255192.168.0.*
以及 192.168.0.0/255.255.255.0

自定义错误处理

use M6Web\Component\Firewall\Firewall;

function handleFirewallReturn(Firewall $firewall, $response) {
    if (false === $response) {
        header($_SERVER["SERVER_PROTOCOL"]." 403 Forbiden");
        exit();
    }

    return $response;
}

$whiteList = array(
    '127.0.0.1',
    '198.168.0.*',
);

$blackList = array(
    '192.168.0.50',
);

$firewall = new Firewall();
$firewall
    ->setDefaultState(true)
    ->addList($whiteList, 'local', true)
    ->addList($blackList, 'localBad', false)
    ->setIpAddress('195.88.195.146')
    ->handle('handleFirewallReturn')
;

handle('handleFirewallReturn') 调用 handleFirewallReturn 并以防火墙对象和响应(true 或 false)作为参数。

运行测试

$ php composer.phar install --dev
$ ./vendor/bin/atoum -d Tests

鸣谢

Cytron团队M6 Web开发。
使用atoum进行测试。

许可证

Firewall采用MIT许可证