web-dev-qa-db-fra.com

Est-il sûr de faire confiance à $ _SERVER ['REMOTE_ADDR']?

Est-il sûr de faire confiance à $_SERVER['REMOTE_ADDR']? Peut-il être remplacé en changeant l'en-tête de la demande ou quelque chose comme ça?

Est-il sûr d'écrire quelque chose comme ça?

if ($_SERVER['REMOTE_ADDR'] == '222.222.222.222') { // my ip address
    $grant_all_admin_rights = true;
}
81
Silver Light

Oui, c'est sûr. Il s'agit de l'IP source de la connexion TCP et ne peut pas être remplacée en changeant un en-tête HTTP.

Vous pouvez vous inquiéter si vous êtes derrière un proxy inverse, auquel cas REMOTE_ADDR sera toujours l'IP du serveur proxy et l'IP utilisateur sera fourni dans un en-tête HTTP (tel que X -Forwarded-For ). Mais pour le cas d'utilisation normal, la lecture de REMOTE_ADDR est correcte.

100
sagi

$_SERVER['REMOTE_ADDR'] est l'adresse IP sur laquelle la connexion TCP est entrée. Bien qu'il soit techniquement possible d'usurper les adresses IP bidirectionnellement sur Internet (en annonçant des routes erronées via BGP), de telles attaques sont susceptibles d'être repéré et non disponible pour l'attaquant type - en gros, votre attaquant doit avoir le contrôle sur un FAI ou un opérateur. Il n'y a pas d'attaques d'usurpation unidirectionnelle possibles contre TCP (pour le moment). L'usurpation IP bidirectionnelle est triviale sur un LAN cependant.

Sachez également qu'il peut ne pas s'agir d'une adresse IPv4, mais d'une adresse IPv6. Votre chèque actuel est très bien à cet égard, mais si vous voulez vérifier que 1.2.3.4 se produit uniquement n'importe où dans $_SERVER['REMOTE_ADDR'], un attaquant pourrait se connecter simplement depuis 2001:1234:5678::1.2.3.4.

En résumé, pour toute autre application que les applications critiques (bancaires/militaires/dommages potentiels> 50 000 €), vous pouvez utiliser l'adresse IP distante si vous pouvez exclure les attaquants de votre réseau local.

56
phihag

Comme mentionné ci-dessus, ce n'est pas absolument sûr. Mais cela ne signifie pas que vous ne devriez pas l'utiliser. Envisagez de combiner cela avec d'autres méthodes d'authentification, par exemple la vérification des valeurs COOKIE.

3
Audio