是否需要验证$_SERVER[';REMOTE_ADDR';]


is it necessary to validate $_SERVER['REMOTE_ADDR']?

假设php通过cgi/mod_php/等在web模式下运行…

是否可以安全地假设$_SERVER['REMOTE_ADDR']将存在,并且更进一步地,它将包含一个正确风格化的(对不起,术语可能不在这里…)ip(1.1.1.1->255.255.255?)?

这不是一个关于$_SERVER["REMOTE_ADDR"]中包含的ip是否是发出请求的客户端的真实ip的问题,因为我知道这可以通过修改出站tcp数据包来"欺骗"。。。

简单地说:

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

谢谢。

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

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