Bonjour,
J'ai plusieurs noms de domaine qui pointent vers un seul et même serveur. Il ne s'agit pas de redirection http mais bien pour chacun des domaines la même adresse IP au niveau DNS.
Dans ce script j'utilise la fonction suite :

     if ( !isset ( $_SERVER['HTTP_HOST'] ) )
          exit;
     else define ( 'SYSTEME_NOM_DE_DOMAINE' , $_SERVER['HTTP_HOST'] );


Le but est de savoir par quel nom de domaine le visiteur est passé.

J'enregistre le résultat dans un fichier qui porte le nom du domaine.

Ma question est : comment ce fait-il que j'ai des noms de domaines comme :

- proxy.ucoz.kz
- google.com
- voir directement l'ip de mon serveur

En plus des miens?

pourquoi HTTP_HOST me retourne ça ?
Merci à tous
Modifié par arno54 (09 May 2015 - 05:43)
HTTP_HOST c'est normalement l'adresse à partir de laquelle ton serveur a été contacté, donc si quelqu'un (ou quelque chose) tape directement l'adresse IP de ton serveur dans le barre d'adresse au lieu de ton nom de domaine c'est normal que ton IP soit dans les traces.

Pour google.com et proxy.ucoz.kz il est probable que ce soit des BOTs qui essaient de trouver des failles de vulnérabilité sur ton site en envoyant des requêtes en faussant les headers. Une requête HTTP n'est pas infalsifiable, c'est juste un protocole de communication : dans la plupart des cas tu auras des informations véridiques envoyées par les navigateurs de tes utilisateurs mais de temps en temps tu aura des surprises.

Pour voir à quel point il est possible de fainter, essaies par toi même en modifiant ton fichier hosts (C:\Windows\System 32\Drivers\etc\hosts pour Windows, /etc/hosts pour Mac et Linux) et ajoutes-y la lignes suivante :
{ADRESSE_IP_DE_TON_SERVEUR} alsacreations.com
et ensuite rends toi sur http://alsacreations.com
Tu verra que dans ton fichier ou sont recensés les HTTP_HOST il y aura un petit nouveau Smiley ravi
Freez a écrit :
Pour google.com et proxy.ucoz.kz il est probable que ce soit des BOTs qui essaient de trouver des failles de vulnérabilité sur ton site en envoyant des requêtes en faussant les headers. Une requête HTTP n'est pas infalsifiable, c'est juste un protocole de communication : dans la plupart des cas tu auras des informations véridiques envoyées par les navigateurs de tes utilisateurs mais de temps en temps tu aura des surprises.

Justement, ce Host est important pour le protocole, au point que dans le cas typique, avec un Host invalide, il ne devrait même pas recevoir la requête, à moins que son serveur ne soit un dédié… Le Host qui a été introduit avec HTTP 1.1 et qui n’existait pas avec HTTP 1.0, permet de faire la distinction entre plusieurs sites hébergés sur un même serveur, à une même IP. Et comme la plupart des gens sont hébergés sur un mutualisé, ce qu’il reçoit est étonnant. Excepté comme dit plus haut, s’il est sur un dédié.

C’est quand-même bizarre.
Modifié par hibou57 (09 May 2015 - 13:41)
Merci pour ces premières réponses. Effectivement il s'agit d'un serveur virtuel de chez OVH. Une Debian vierge qu'il faut ensuite paramètrer comme on souhaite. Je ne m'en utilise pas comme serveur de production mais comme machine de test.

Par contre le fichier HOST lui n'a pas été modifié. Je comprends bien la notion dans ce fichier d'associer un domaine à une IP, ce que je cherche à comprendre c'est comment, pour mon script php, j'obtiens via la variable $_SERVER['HTTP_HOST'] par exemple google.com de la part du visiteur ?
Modifié par arno54 (09 May 2015 - 14:40)
Avec apache, il y a me semble-t-il toujours un virtual host par défaut, qui accepte n'importe quel host inconnu ou l'absence de host dans la requête.

Après, ça se configure, il y a deux écoles: soit le virtual host par défaut est le site le plus fréquenté, le plus important, etc. correspondant au domaine principal, ou alors on fait un catchall spécifique qui n'a rien à voir genre 404.domaine-principal.tld avec une super page indiquant que ce domaine n'existe pas même si techniquement à cause des DNS le domaine tapé pointe sur le serveur.

Dans tous les cas effectivement ça ne peut pas arriver sur un serveur mutualisé, puisque l'en-tête host détermine le virtual host de manière unique.

ET en effet, c'est probablement des robots fouineurs car à moins de faire une requête à la main avec telnet ou de bidouiller le fichier /etc/hosts | C:\windows\system32\drivers\etc\hosts, c'est impossible à faire juste avec son navigateur.

Quoi qu'il en soit, c'est très simple à faire à la main, la preuve :


>netcat alsacreations.com 80
GET / HTTP/1.0
Host: google.com

HTTP/1.1 200 OK
Date: Sat, 09 May 2015 15:12:31 GMT
Server: Apache/2.2.22 (Debian)
Vary: Host,Accept-Encoding
Last-Modified: Sat, 01 Dec 2012 11:56:05 GMT
ETag: "7002001-b1-4cfc9336cff40"
Accept-Ranges: bytes
Content-Length: 177
Connection: close
Content-Type: text/html

<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>


Modifié par QuentinC (09 May 2015 - 17:15)
En relisant QuentinC, je me disais que c’est peut-être quelqu’un qui scrute des serveurs, à la recherche de serveurs cachés de Google.

En tous cas, les IP d’où émanent ces requêtes, elles me semblent bonnes à bloquer.
Effectivement, dans apache quand un ip est demandée à la place d'un domaine apache répond par le premier virtualhost définit dans 000-default.conf

Mais je n'ai qu'un virtualhost sur le serveur.
La situation aujourd'hui est comme suit :

- domaine_1.com ----|
- domaine_2.com ----|
- domaine_3.com ----|
- domaine_4.com ----|
- etc --------------------|
|---> vers une seule IP qui est dans le host debian un seul domaine

j'ai donc des domaines qui apparaissent dans mon $_SERVER['HTTP_HOST'] qui ne correspondent à aucun des miens et j'ai même des préfixes de domaine comme m.mondomaine.com ou encore forum.mondomaine.com alors que mon host est simple :

monippublique www.mondomaine.com

Bon en tout cas merci pour vos réponses rapides. Pour éviter tout ces petits soucis je pense que je vais créer un array des domaines à moi qui pointent vers mon IP publique et si un domaine autre se déclare dans $_SERVER['HTTP_HOST'] comme il ne correspond pas à ce qu'il y a dans l'array ..... exit ();

Smiley murf
a écrit :
En tous cas, les IP d’où émanent ces requêtes, elles me semblent bonnes à bloquer.


Prépare-toi à bloquer des centaines d'adresses IP par jour, et régulièrement des innocents.

a écrit :
Pour éviter tout ces petits soucis je pense que je vais créer un array des domaines à moi qui pointent vers mon IP publique et si un domaine autre se déclare dans $_SERVER['HTTP_HOST'] comme il ne correspond pas à ce qu'il y a dans l'array ..... exit ();


N'oublie pas qu'il peut y avoir les variantes avec ou sans www .

Ca va marcher mais c'est dommage; à mon avis c'est beaucoup mieux et plus maintenable de configurer un vhost par défaut qui pointe sur une page bidon, comme celle d'alsa ci-dessus.
Modifié par QuentinC (10 May 2015 - 06:09)