jalle19/php-whitelist-check

提供一个简单的方法来检查一个地址或域名是否在白名单上

1.2.0 2023-08-31 11:57 UTC

This package is auto-updated.

Last update: 2024-08-30 01:17:30 UTC


README

Run test suite Coverage Status Scrutinizer Code Quality

php-whitelist-check

一种现代且简单的方法,用于验证IP地址和域名是否在白名单上。它支持IPv4和IPv6地址、CIDR子网以及域名和通配符域名。

需求

  • PHP 5.3或更高版本

用法

Check::whitelist()方法接受一个定义数组,这些定义将构成白名单。定义可以是字符串(将解析为其相应的对象)或对象。

Check::check($value)方法用于检查指定值是否与当前白名单匹配。如果值与任何定义匹配,则方法将返回true。

要创建自己的定义类,只需扩展Whitelist\Definition\Definition并实现Whitelist\Definition\IDefinition

示例用法

require_once("vendor/autoload.php");

$checker = new Whitelist\Check();

try {
	$checker->whitelist(array(
		'10.0.3.1',
		'10.0.0.0/16',
		'2001:db8:100:934b::3:1',
		'2001:db8:100:934b::/64',
		'*.example.com',
		'localhost',
		new Whitelist\Definition\Domain('vpn.work.com'),
	));
}
catch (InvalidArgumentException $e) {
	// thrown when an invalid definition is encountered
}

$checker->check('10.0.1.1'); // true
$checker->check('10.1.1.1'); // false
$checker->check('2001:db8:100:934b::210:2'); // true
$checker->check('another.example.com'); // true

许可协议

此库受BSD 2-Clause许可协议的许可。

致谢

此库依赖于xrstf/ip-utils的IP相关功能。它还假设ip-utils的测试用例足够充分,这就是为什么对此库中的这些函数只进行了简单的测试。