etchfoda/php-whitelist-check

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

1.0.9 2020-08-19 22:01 UTC

This package is auto-updated.

Last update: 2024-09-20 06:29:40 UTC


README

Build Status Coverage Status

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的测试用例是充分的,这就是为什么此库对这些函数只进行了简单的测试。