Discuz! IP 获取和验证代码以及$onlineipmatches

  刚才看了下Discuz! 7.2的common.inc.php文件内容,想找下突破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'];
}

preg_match("/[\d\.]{7,15}/", $onlineip, $onlineipmatches);
$onlineip = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown';
unset($onlineipmatches);

 

看到这个$onlineipmatches 变量。用正则表达式从变量$onlineip中取出符合规则的内容赋予给$onlineipmatches,

 

最后将$onlineipmatches数组的第一个元素赋予给$onlineip(如果存在合规则的话,否则设为unknown)。

 

我有个问题,$onlineipmatches 没有初始化,会不会存在变量覆盖的安全问题呢?

 

也就是在url上赋值给$onlineipmatches,引入恶意代码。之前有过‘HTTP_X_FORWARDED_FOR’ 提交恶意代码,导致SQL注入问题,那这个会不会呢?

 

由于本人对PHP一窍不通,So~~~~(只是想想)

 

参见:http://code.google.com/p/pasc2at/wiki/SimplifiedChinese#%E5%8F%98%E9%87%8F%E8%A6%86%E7%9B%96

你可能感兴趣的:(sql,PHP,正则表达式,SQL Server,Google)