[PHP] D'où vient REMOTE_ADDR ?

a marqué ce sujet comme résolu.

Salut.

Question idiote, j’aimerais bien savoir d’où vient $_SERVER['REMOTE_ADDR'];

A priori ça vient d’Apache ou de la couche réseau, vu qu’il n’y a pas de champ IP: 127.0.0.2 dans la requête HTTP.

La seule idée qui m’est venue est qu’Apache récupère l’ip source de la connexion TCP du client, pour ensuite la stocker dans le tableau $_SERVER.

Mais est-ce que PHP effectue d’autres vérifications, par exemple pour voir si la valeur entrée a bien la forme d’une IP ou autre.

Merci.

Hello!

Un rapide coup d’oeil sur les sources de PHP montre ceci : https://github.com/php/php-src/blob/b942648771a4638d4d043e2b2836f34c139cace3/sapi/cli/php_cli_server.c#L644

Je pense que REMOTE_ADDR correspond à l’adresse IP issue de la connexion via les sockets sous-jacentes, comme tu le supposes, donc ça ne sera ni plus ni moins qu’un entier (de 32-bit dans le cas d’une IPV4) qui sera formaté en notation IPV4 à stocker dans REMOTE_ADDR. ;)

Je pense que PHP prend en entrée un nombre, donc il n’a pas besoin de faire quelque vérification que ce soit puisque c’est lui-même qui produit cette notation.

Oui effectivement, ça doit être ça.

Avec strncpy(port, tmp + 1, 8); pas trop moyen de bidouiller quoi que ce soit quand bien même les champs seraient remplis avec autre chose que ce qui provient de la connexion TCP.

J’avais lu un topic sur un autre forum où ça parlait d’injections SQL via le $_SERVER['REMOTE_ADDR'] justement (http://www.siteraw.com/forum/php/remote-addr-sql) et ça avait titillé ma curiosité sur la provenance des informations récupérées par PHP.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte