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

ano*_*one 5 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)如果在web模式下运行php,$ _SERVER ['REMOTE_ADDR']将始终存在.b)如果$ _SERVER ['REMOTE_ADDR']确实存在,它是否总是包含一个正确的语法化ip?

谢谢.

phi*_*hag 6

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

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