诶? 获取远程IP地址

本文代码使用PHP语言, 如有不适, 请自行转换为看得懂的语言。

小时候, 我在搜索”PHP 获取远程ip地址”的时候, 某美国知名搜索引擎会告诉我有个网页, 它里面是这样写的

if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if (isset($_SERVER['REMOTE_ADDR']))
    $ip = $_SERVER['REMOTE_ADDR'];
else
    $ip = 'Unknown';

这样子会有一个问题, 就是客户端可以伪造成代理, 发送X-Forwarded-For头欺骗php, 如果只是获取REMOTE_ADDR, 用户用代理的话就没有办法了。

对于如上的解决方案我想到了两个。

方案一: 禁止使用代理, 也就是如果有X-Forwarded-For头的话就拒绝访问, 可是有的貌似不会发送X-Forwarded-For头。

方案二: 给每个代理服务器颁发一个证书, 只有合法的代理才能被服务器信任。

如上, 对于vpn均无效。

某神牛说过”只是我不觉得我们的能力足以用这些雕虫小技阻挡国家机器”。

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/3343QrCode