PHP 中的 REMOTE_ADDR 和 IPv6
Posted
技术标签:
【中文标题】PHP 中的 REMOTE_ADDR 和 IPv6【英文标题】:REMOTE_ADDR and IPv6 in PHP 【发布时间】:2011-02-06 20:35:41 【问题描述】:假设$_SERVER['REMOTE_ADDR']
总是返回一个IPv4 地址 是否安全?
谢谢!
【问题讨论】:
【参考方案1】:REMOTE_ADDR 键由 Web 服务器设置,而不是 php。如果 Web 服务器在 v6 上侦听并且用户以这种方式连接,则它将是 v6 地址
【讨论】:
+1,谢谢!我将尝试弄清楚如何将 IPv6 地址转换为数字。 php.net/manual/en/function.inet-pton.php 会将 v4 和 v6 “字符串”地址转换为其打包表示。 @Michael IPv6 有许多文本表示。$_SERVER['REMOTE_ADDR']
是否返回了标准表示?
@Pacerier 您将在双栈系统上获得普通的压缩 IPv6 地址或 IPv4 映射的 IPv6 地址。【参考方案2】:
我在 Apache 2 的 REMOTE_ADDR 中看到一个错误的 IP 地址报告给 php。
它是“183.60..244.37”。
因此,我认为您的问题“可以安全地假设...”的答案肯定是否,REMOTE_ADDR 不可信。
据我所知,它是从服务器报告给 PHP 的,在我的例子中是 Apache。为什么它很糟糕,我仍在试图弄清楚。我知道这一点。它是作为一批攻击请求的一部分出现的。有时是 183.60.244.37,有时是 183.60..244.37。
另见this。
【讨论】:
很高兴知道,可能是一些 Apache 错误吗? 一位 php 开发人员刚刚告诉我 REMOTE_ADDR 来自 cgi,因此来自服务器的 tcp 连接,而不是 http。但我仍在努力寻找服务器如何将其报告给 php,如果这是正在发生的事情。以上是关于PHP 中的 REMOTE_ADDR 和 IPv6的主要内容,如果未能解决你的问题,请参考以下文章