web中有很些敏感操作我们只希望通过内网访问,对此可以对来源ip做判断,如果是内网则允许访问,否则拒绝
php中可如下实现
function isIntranet($ip) {
$ipLong = ip2long($ip);
if (!$ipLong) {
return false;
}
if (($ipLong & 0xff000000) === 0x0a000000) { //10.0.0.0 - 10.255.255.255
return true;
} elseif (($ipLong & 0xfff00000) === 0xac100000) { //172.16.0.0 - 172.31.255.255
return true;
} elseif (($ipLong & 0xffff0000) === 0xc0a80000) { //192.168.0.0 - 192.168.255.255
return true;
}
return false;
}
也可以在 nginx 中可以配置
location /api/private {
deny 10.0.0.0/8;
deny 172.16.0.0/12;
deny 192.168.0.0/16;
}