日期:2014-05-17  浏览次数:20439 次

如果防止ip伪造
以下代码,用于取得客户端IP:
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
  $onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
  $onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
  $onlineip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
  $onlineip = $_SERVER['REMOTE_ADDR'];
}
但是以HTTP_开始的请求header均属于客户端可以伪造的信息,请问在反向代理环境下,如何保证PHP不会接收到伪造的无效的HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR值?


------解决方案--------------------
反向代理和伪造IP有关系?

IP是欺诈不了的,想欺诈你也肯定是用代理服务器来请求你,你能怎么办?
------解决方案--------------------
人家用代理上或是vpn那个IP虽然不是他本人的,但是是代理真真切切的IP,就向买东西一样,让你店买东西的叫小王,他真叫小王,等小王走了,我告诉,小王是帮别人买的东西