m6web / firewall
此包已弃用且不再维护。未建议替代包。
提供IP过滤功能的库
v1.0.3
2019-10-15 08:29 UTC
Requires
- php: >=5.4.0
- ext-bcmath: *
Requires (Dev)
- atoum/atoum: ^2.8|^3.0
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.0 到 192.168.0.255 的所有IP 以及从 192.168.1.0 到 198.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.255 和 192.168.0.* |
CIDR掩码 | 192.168.0.0/24 |
以 192.168.0 开头的IP 等同于 192.168.0.0-192.168.0.255 和 192.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许可证。