我有一个现有的php web应用程序,我在IPv4上,我怎么能伪造IPv6地址来测试应用程序与它的兼容性?或者有更好的方法来测试IPv6兼容性吗?
更新: 我的应用程序在进行某些操作时记录用户的IP。 IP地址存储在数据库中(从另一个问题我可以理解,BINARY是最好的列类型)。应用程序也应该可以通过IP进行搜索。
我希望apache / php能像我使用IPv6一样工作,我需要确保我的应用程序与IPv6的兼容性已准备好在IPv4网络和IPv6网络上进行生产。
答案 0 :(得分:5)
我同意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
答案 1 :(得分:0)
您的网站可以正常使用IPv6。您需要测试的唯一事情是,如果您要存储IPv6,或者某种类型的日志记录,您应该正确存储它。要伪造这个,只需输入一些变量并将其放入数据库,或者你想用它做什么。
示例:2001:db8::1:0:0:1
和2001:0DB8:0:0:1::1
以及fe80::202:b3ff:fe1e:8329
否则,不要担心!
答案 2 :(得分:0)
如果您的应用程序记录了IP地址,请确保存储它们的字段足够大。确保处理这些日志的任何应用程序都知道如何处理IPv6地址。如果您需要按块/范围搜索地址,则应使用appropriate storage types。如果您基于IP地址进行访问控制,那么它会变得有点困难,因为IPv6客户端可能会在启用了隐私扩展时经常更改其源地址,因此您可能希望允许每64位访问而不是每个单独的地址。
最重要的是:测试,测试,测试: - )
答案 3 :(得分:0)
另请注意,为了比较IPv6地址,字符串比较是不够的。同一IP地址有不同的表示形式,例如2001:0DB8:0:0:1::1
是2001:0db8:0000:0000:0001:0000:0000:0001
的缩写形式。