我有许多项目的功能依赖于 、 和 提供的$_SERVER['REMOTE_ADDR]
IP$_SERVER['HTTP_X_FORWARDED_FOR']
地址$_SERVER['CLIENT_IP']
。
IPV4 地址很容易匹配,因为我们总是以相同的格式接收它们:4 个不带前导 0 的整数,用点分隔.
。
而 IPV6 地址可以被压缩。例如:FF01:0:0:0:0:0:0:101 -> FF01::101
我一直在研究这个问题,但没有发现任何相关的东西,所以我想请教您的经验。是否$_SERVER['REMOTE_ADDR]
使用标准?假设它总是以压缩或未压缩的形式接收是否安全?
或者我应该在尝试测试它们之前压缩所有的 IPV6 字符串?
笔记:
理想情况下,我想将 IPV6 地址作为字符串而不是二进制结构来处理,以提高数据库/源代码的可读性并允许更轻松的 IP 范围匹配。