PHP 写了个页面,如果访问来自私有 IP 地址就允许。家里的 ip 是 192.168.1.0/24 网段的。今天发现一个漏洞,在朋友家访问我这个页面,居然可以打开。查看 ip 发现是 10.15.25.81 。
我知道只要改成 192.168.0.0/16 网段就可以了,但是也不能保证运营商分配 192.168.0.0/16 给其他用户,虽然大概率不太可能大内网用 C 类私有地址。
<?php
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
}
$ip = $_SERVER["REMOTE_ADDR"];
//local access OR from my IP(through Cloudflare)
if (
(!(filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)))//check local ip
||
($ip == gethostbyname('my.ddns.me'))//check public ip
)
{
//do nothing;
}
else{
//go error page
echo "No access";
?>
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.