在代码中使用IP地址进行白名单检查
示例代码:
// 定义允许访问API的IP地址列表
$whitelisted_ips = array(
'192.168.1.1',
'203.0.113.0/24',
'2001:db8::/32'
);
// 获取当前请求的IP地址
$client_ip = $_SERVER['REMOTE_ADDR'];
// 检查请求的IP地址是否在允许访问的列表中
$is_whitelisted = false;
foreach ($whitelisted_ips as $ip) {
if (strpos($ip, '/') !== false) {
// 如果是IP地址段,则进行CIDR匹配
list($subnet, $mask) = explode('/', $ip);
if ((ip2long($client_ip) & ~((1 << (32 - $mask)) - 1)) == ip2long($subnet)) {
$is_whitelisted = true;
break;
}
} elseif ($ip == $client_ip) {
// 如果是单个IP地址,则进行精确匹配
$is_whitelisted = true;
break;
}
}
if (!$is_whitelisted) {
// 如果请求的IP地址不在白名单中,则返回错误信息
http_response_code(403);
echo 'Access denied.';
exit;
}
// 如果请求的IP地址在白名单中,则继续进行API调用
这个示例代码定义了一个允许访问API的IP地址列表,然后获取当前请求的IP地址,并检查它是否在这个列表中。如果请求的IP地址不在白名单中,则返回一个403错误响应,否则继续进行API调用。这种方法可以帮助确保API仅能被授权的IP地址访问。