Enhance remote ip detection

This commit is contained in:
Laurent Destailleur 2020-12-23 13:17:40 +01:00
parent 740105ae08
commit 53c6d92b0b

View File

@ -2887,12 +2887,16 @@ function getUserRemoteIP()
{ {
if (empty($_SERVER['HTTP_X_FORWARDED_FOR']) || preg_match('/[^0-9\.\:,\[\]]/', $_SERVER['HTTP_X_FORWARDED_FOR'])) { if (empty($_SERVER['HTTP_X_FORWARDED_FOR']) || preg_match('/[^0-9\.\:,\[\]]/', $_SERVER['HTTP_X_FORWARDED_FOR'])) {
if (empty($_SERVER['HTTP_CLIENT_IP']) || preg_match('/[^0-9\.\:,\[\]]/', $_SERVER['HTTP_CLIENT_IP'])) { if (empty($_SERVER['HTTP_CLIENT_IP']) || preg_match('/[^0-9\.\:,\[\]]/', $_SERVER['HTTP_CLIENT_IP'])) {
$ip = (empty($_SERVER['REMOTE_ADDR']) ? '' : $_SERVER['REMOTE_ADDR']); if (empty($_SERVER["HTTP_CF_CONNECTING_IP"])) {
$ip = (empty($_SERVER['REMOTE_ADDR']) ? '' : $_SERVER['REMOTE_ADDR']); // value may have been forged by client
} else {
$ip = $_SERVER["HTTP_CF_CONNECTING_IP"]; // value here may have been forged by client
}
} else { } else {
$ip = $_SERVER['HTTP_CLIENT_IP']; // value is clean here $ip = $_SERVER['HTTP_CLIENT_IP']; // value is clean here but may have been forged by proxy
} }
} else { } else {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR']; // value is clean here $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; // value is clean here but may have been forged by proxy
} }
return $ip; return $ip;
} }