84 votes

Est-il prudent de faire confiance à $ _SERVER ['REMOTE_ADDR']?

Est-il prudent de faire confiance à $_SERVER['REMOTE_ADDR'] ? Peut-on le remplacer en modifiant l'en-tête de la requête ou quelque chose du genre?

Est-il prudent d'écrire quelque chose comme ça?

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

103voto

sagi Points 3157

Oui, c'est sécuritaire. C'est l'adresse IP source de la connexion TCP et ne peut pas être remplacé par la modification d'un en-tête HTTP.

Par exemple, si vous êtes derrière un proxy inverse, REMOTE_ADDR sera toujours l'adresse IP du serveur proxy et l'adresse IP de l'utilisateur sera fournie dans un en-tête HTTP (tel que X-Forwarded-For ). Mais pour la lecture normale de cas d'utilisation, REMOTE_ADDR convient.

56voto

phihag Points 89765

$_SERVER['REMOTE_ADDR'] est l'adresse IP de la connexion TCP est venu sur. Alors qu'il est techniquement possible pour la transmission bidirectionnelle d'usurpation des adresses IP sur Internet (et en annonçant la faute des routes via BGP), de telles attaques sont susceptibles d'être repéré et ne sont pas disponibles à la moyenne de l'attaquant fondamentalement, l'attaquant doit avoir le contrôle d'un FAI ou d'un transporteur. Il n'y a pas faisable unidirectionnel de l'usurpation d'attaques contre le protocole TCP (encore). Bidirectionnel usurpation d'adresse IP est trivial sur un réseau local.

Sachez également qu'il est peut-être pas être une adresse IPv4, mais une adresse IPv6. Votre chèque est bien, mais si vous voulez vérifier que 1.2.3.4 ne se produit n'importe où dans $_SERVER['REMOTE_ADDR'], un attaquant pourrait tout simplement vous connecter à partir d' 2001:1234:5678::1.2.3.4.

Sommairement, pour autre chose que des critiques (bancaire/militaire/dommages potentiels >50.000€) des applications, vous pouvez utiliser la télécommande de l'adresse IP si vous pouvez exclure les attaquants dans votre réseau local.

3voto

Audio Points 131

Comme mentionné ci-dessus, ce n'est pas absolument sûr. Mais cela ne signifie pas que vous ne devriez pas l'utiliser. Pensez à combiner cela avec d'autres méthodes d'authentification, par exemple en vérifiant les valeurs COOKIE.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X