【问题标题】:REMOTE_ADDR and IPv6 in PHPPHP 中的 REMOTE_ADDR 和 IPv6
【发布时间】:2011-02-06 20:35:41
【问题描述】:

假设$_SERVER['REMOTE_ADDR'] 总是返回一个IPv4 地址 是否安全?

谢谢!

【问题讨论】:

    标签: php apache ip-address ipv6 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,如果这是正在发生的事情。
    猜你喜欢
    • 2023-03-03
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多