【问题标题】:How to test PHP application for IPv6 compatibility?如何测试 PHP 应用程序的 IPv6 兼容性?
【发布时间】:2012-03-08 09:39:04
【问题描述】:

我有一个现有的 php web 应用程序,我在 IPv4 上,我如何伪造 IPv6 地址来测试应用程序与它的兼容性?还是有更好的方法来测试 IPv6 兼容性?

更新: 当他进行某些操作时,我的应用程序会记录用户的 ip。 IP 地址存储在数据库中(从另一个问题我可以理解 BINARY 是最好的列类型)。该应用程序还应该可以通过 IP 进行搜索。

我希望 apache / php 像使用 IPv6 一样工作,我需要确保我的应用程序与 IPv6 的兼容性已准备好在 IPv4 网络 + IPv6 网络上进行生产。

【问题讨论】:

  • 检查你的 PHP 是否没有--disable-ipv6编译
  • 该应用程序是针对多个客户端的,其中一些人要求我将脚本与 IPv6 兼容,他们将在不久的将来迁移到 IPv6

标签: php compatibility ipv6


【解决方案1】:

我同意 Topener 的观点;不用担心,您的网站将在 IPv6 上运行良好。 您也不必担心 apache 或 PHP,它们会运行良好。

您应该只关心在数据库等中存储 IPv6 地址。 确保您可以以正确的方式存储它们,并且您的数据库可以处理 IPv6 地址。

您可以简单地将 $_SERVER['REMOTE_ADDR'] 更改为 IPv6 地址:

echo $_SERVER['REMOTE_ADDR']; // will give you your current IP (probaply IPv4)

// change the REMOTE_ADDR to an IPv6 address
$_SERVER['REMOTE_ADDR'] = '3ffe:6a88:85a3:08d3:1319:8a2e:0370:7344';

您可以在此处找到有关将 IPv6 地址存储到数据库中的更多信息:

How to store IPv6-compatible address in a relational database

【讨论】:

【解决方案2】:

您的网站可以使用 IPv6 正常运行。您唯一需要测试的是,如果您要存储 IPv6 或某种类型的日志记录,您应该正确存储它。要伪造这一点,只需输入一些变量并将其放入数据库,或者您想用它做什么。

一个例子:2001:db8::1:0:0:12001:0DB8:0:0:1::1fe80::202:b3ff:fe1e:8329

否则,别担心!

【讨论】:

  • 我希望 apache / php 像使用 IPv6 一样工作,我需要确保我的应用程序与 IPv6 的兼容性已准备好在 IPv4 网络 + IPv6 网络上进行生产
【解决方案3】:

如果您的应用程序记录 IP 地址,请确保存储它们的字段足够大。确保处理这些日志的任何应用程序都知道如何处理 IPv6 地址。如果您需要按块/范围搜索地址,您应该使用appropriate storage types。如果您基于 IP 地址进行访问控制,那么它会变得更加困难,因为 IPv6 客户端在启用隐私扩展时可能会经常更改其源地址,因此您可能希望允许按 /64 而不是每个单独的地址进行访问。

最重要的是:测试、测试、测试 :-)

【讨论】:

    【解决方案4】:

    还要注意,对于比较 IPv6 地址,字符串比较是不够的。同一个IP地址有不同的表示,例如2001:0DB8:0:0:1::12001:0db8:0000:0000:0001:0000:0000:0001的简写形式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      • 2016-10-24
      • 1970-01-01
      • 2011-03-27
      • 2010-11-01
      • 1970-01-01
      • 2012-09-08
      相关资源
      最近更新 更多