是否有必要验证$ _SERVER ['REMOTE_ADDR']?

时间:2011-06-25 14:01:39

标签: php apache cgi

假设php通过cgi / mod_php / etc ...

在Web模式下运行

可以安全地假设$ _SERVER ['REMOTE_ADDR']将存在,而且它将包含正确的程式化(对不起,术语可能在这里......)ip(1.1.1.1 - > 255.255.255.255?)?

这不是关于天气的问题,$ _SERVER ['REMOTE_ADDR']中包含的ip将是发出请求的客户端的真实IP,因为我知道这可以通过修改出站tcp数据包来“欺骗” ...

只是简单地说:

a)如果在网络模式下运行php,$ _SERVER ['REMOTE_ADDR']将始终存在。 b)如果$ _SERVER ['REMOTE_ADDR']确实存在,它是否总是包含一个正确的语法化ip?

感谢。

1 个答案:

答案 0 :(得分:6)

是的,它始终存在于Web模式中,并且由于IP地址从其二进制表示转换为您看到的文本格式,因此它始终有效 - 无法在IP中指定无效的IP报头中。

还有一件事:除非绝对必须处理IP地址,否则不要采用任何特殊格式。例如,IPv6地址较长并包含不同的字符。基本上,将IP地址作为不透明字符串处理。