Ich habe einen Wettbewerb in PHP skripted, vote basiert. Aus einer IP kann eine Person einmal für jemanden wählen. Ich habe ein Protokoll aller IP-Adressen, die gewählt haben, aber ich sehe etwas seltsam. Einige IP-Adressen scheinen für = "ip_address: port" zu sein, während andere nur ip_address sind, und ich sehe, dass eine IP-Adresse, die mit for = "..." formatiert ist, dort mehrere Male erscheint, nur mit verschiedenen Ports. Kann mir bitte jemand das erklären? Wie machen Nutzer das, sollte ich sie dafür vom Wettbewerb verbannen?IP-Adressen in PHP
ich mit dieser Funktion Adresse Benutzer IP erhalten:
function get_client_ip_env() {
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
Auch, wenn jemand einige gute Referenz und Handbuch mit allen vordefinierten Variablen in PHP kennen, es mit mir bitte teilen.
Es gibt nur *** *** eine zuverlässige Quelle für die Remote-IP: 'REMOTE_ADDR'. Alles andere wird durch HTTP-Header festgelegt, die jeder nach seinen Wünschen einstellen kann, wodurch Ihr "Schutz" vollständig umgangen wird. Du schießt deinen eigenen Fuß, indem du dir all diese zufälligen HTTP-Header ansiehst. Die "seltsamen Werte", die Sie sehen, stammen wahrscheinlich aus einem dieser Header. – deceze
Wenn Sie einen Reverseproxy oder Load Balancer haben, überprüfen Sie nur den spezifischen Header des Proxys oder Load Balancers und vertrauen nur dem Header, wenn dieser spezifisch vom Proxy oder Load Balancer stammt. –
Alle Super Globals in PHP http://php.net/manual/en/language.variables.superglobals.php – Dave