diff options
-rw-r--r-- | _test/cases/inc/common_clientip.test.php | 8 | ||||
-rw-r--r-- | inc/common.php | 1 |
2 files changed, 8 insertions, 1 deletions
diff --git a/_test/cases/inc/common_clientip.test.php b/_test/cases/inc/common_clientip.test.php index 257229811..04d071e7d 100644 --- a/_test/cases/inc/common_clientip.test.php +++ b/_test/cases/inc/common_clientip.test.php @@ -141,6 +141,14 @@ class common_clientIP_test extends UnitTestCase { $this->assertEqual(clientIP(true),$out); } + function test_malicious(){ + $_SERVER['REMOTE_ADDR'] = ''; + $_SERVER['HTTP_X_REAL_IP'] = ''; + $_SERVER['HTTP_X_FORWARDED_FOR'] = '<?php set_time_limit(0);echo \'my_delim\';passthru(123.123.123.123);die;?>'; + $out = '123.123.123.123'; + $this->assertEqual(clientIP(),$out); + } + } diff --git a/inc/common.php b/inc/common.php index 6fa0cff3c..65ea4c897 100644 --- a/inc/common.php +++ b/inc/common.php @@ -497,7 +497,6 @@ function clientIP($single=false){ $cnt = count($ip); $match = array(); for($i=0; $i<$cnt; $i++){ - $ip[$i] = preg_replace('/[^0-9\.]+/','',$ip[$i]); if(preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/',$ip[$i],$match)) { $ip[$i] = $match[0]; } else { |