hawkmaster1: Unerklärliche Undefined index: HTTP_HOST

Hallo zusammen,

auf einem Server im lokalen Intranet läuft ein Xammp (windows Server 2012) Im Php error log finde ich immer wieder unerklärlich Einträge zu Undefined index: HTTP_HOST

In der index.php steht folgender Code:

<?php
	if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS'])) {
		$uri = 'https://';
	} else {
		$uri = 'http://';
	}
	$uri .= $_SERVER['HTTP_HOST'];
	header('Location: '.$uri.'/ibs/projectdb.php');
	exit;
?>
Something is wrong with the XAMPP installation :-(

Im error log kommen dann diese Einträge vor. Was mich wundert: Es sind immer zwei Einträge am Tag und die Uhrzeit geht immer etwas nach oben. Von zb. 08:39 am 23. Juli bis 08:42 am 28 August. Was kann denn die Ursache sein? $_SERVER['HTTP_HOST'] müsste doch eigentlich immer gesetzt sein, wenn man über Browser die Seite aufruft oder?

Hier die Log Auszüge:

[23-Jul-2016 08:39:59 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[23-Jul-2016 08:39:59 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[24-Jul-2016 08:40:03 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[24-Jul-2016 08:40:03 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[25-Jul-2016 08:40:07 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[25-Jul-2016 08:40:07 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[26-Jul-2016 08:40:11 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[26-Jul-2016 08:40:11 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[27-Jul-2016 08:40:15 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[27-Jul-2016 08:40:15 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[31-Jul-2016 08:40:32 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[31-Jul-2016 08:40:32 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[06-Aug-2016 08:40:57 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[06-Aug-2016 08:40:57 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[07-Aug-2016 08:41:02 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[07-Aug-2016 08:41:02 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[09-Aug-2016 08:41:10 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[09-Aug-2016 08:41:10 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[10-Aug-2016 08:41:14 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[10-Aug-2016 08:41:14 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[11-Aug-2016 08:41:18 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[14-Aug-2016 08:41:30 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[14-Aug-2016 08:41:31 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[15-Aug-2016 08:41:35 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[15-Aug-2016 08:41:35 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[16-Aug-2016 08:41:39 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[16-Aug-2016 08:41:39 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[17-Aug-2016 08:41:48 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[17-Aug-2016 08:41:48 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[19-Aug-2016 08:41:56 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[19-Aug-2016 08:41:56 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[22-Aug-2016 08:42:08 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[22-Aug-2016 08:42:09 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[28-Aug-2016 08:42:33 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

[28-Aug-2016 08:42:33 Europe/Berlin] PHP Notice:  Undefined index: HTTP_HOST in C:\xampp\htdocs\index.php on line 7

viele Grüße

Hawk

  1. Tach!

    $_SERVER['HTTP_HOST'] müsste doch eigentlich immer gesetzt sein, wenn man über Browser die Seite aufruft oder?

    Ruf den Server doch mal über seine IP-Adresse auf. Am besten gleich über telnet, damit der Request auch garantiert ohne Hostname daherkommt.

    telnet ip-adresse 80
    GET / HTTP/1.0
    

    und zweimal Enter. Die Ausgabe ist nicht weiter interessant, aber wenn dann diese Fehlermeldung im Log auftaucht, weißt du wie das zustande kommt.

    dedlfix.

    1. Hi dedlfix,

      danke für deine Hilfe.

      Ok, aber dann müsste ja irgend jemand Fremdes (vielleicht ein Admin) mit telnet den Server so aufrufen. Oder könnte so etwas auch von einem Virenscanner oder anderen Netzwerktools kommen?

      Gruss hawk

      1. Tach!

        Ok, aber dann müsste ja irgend jemand Fremdes (vielleicht ein Admin) mit telnet den Server so aufrufen. Oder könnte so etwas auch von einem Virenscanner oder anderen Netzwerktools kommen?

        Was sagt denn das Access-Log, wo der Request herkommt?

        dedlfix.

        1. Hi,

          ich habe mal das access.log verglichen.

          Es wird immer wieder von einer bestimmten IP Adresse (habe ich hier geändert) zugegriffen.

          1.23.111.11 - - [31/Aug/2016:08:19:43 +0200] "GET / HTTP/1.1" 302 -
          1.23.111.11 - - [31/Aug/2016:08:19:43 +0200] "GET / HTTP/1.1" 302 - "-" "OpenNMS HttpMonitor"
          1.23.111.11 - - [31/Aug/2016:08:24:44 +0200] "GET / HTTP/1.1" 302 -
          1.23.111.11 - - [31/Aug/2016:08:24:44 +0200] "GET / HTTP/1.1" 302 - "-" "OpenNMS HttpMonitor"
          1.23.111.11 - - [31/Aug/2016:08:29:45 +0200] "GET / HTTP/1.1" 302 -
          1.23.111.11 - - [31/Aug/2016:08:29:45 +0200] "GET / HTTP/1.1" 302 - "-" "OpenNMS HttpMonitor"
          1.23.111.11 - - [31/Aug/2016:08:34:46 +0200] "GET / HTTP/1.1" 302 -
          1.23.111.11 - - [31/Aug/2016:08:34:46 +0200] "GET / HTTP/1.1" 302 - "-" "OpenNMS HttpMonitor"
          1.23.111.11 - - [31/Aug/2016:08:39:47 +0200] "GET / HTTP/1.1" 302 -
          1.23.111.11 - - [31/Aug/2016:08:39:47 +0200] "GET / HTTP/1.1" 302 - "-" "OpenNMS HttpMonitor"
          

          Das wäre zu dem Zeitpunkt wo im error_log der HTTP_HOST Fehler auftrat.

          1.23.111.11 - - [31/Aug/2016:08:42:45 +0200] "GET / HTTP/1.0" 302 - "-" "-"
          1.23.111.11 - - [31/Aug/2016:08:42:46 +0200] "GET / HTTP/1.0" 302 -
          1.23.111.11 - - [31/Aug/2016:08:42:46 +0200] "POST /wsman HTTP/1.1" 404 1053
          

          Ich vermute das hier im Intranet von irgend einem PC Netzwerkscans gemacht werden. Ich werde mal unsere IT Admins befragen. Einfach auch aus Interesse.

          vielen Dank an alle für die Tipps.

          Gruss hawk

          1. Hallo,

            Es wird immer wieder von einer bestimmten IP Adresse (habe ich hier geändert) zugegriffen.

            ist es denn eine interne IP-Adresse?

            1.23.111.11 - - [31/Aug/2016:08:42:45 +0200] "GET / HTTP/1.0" 302 - "-" "-"
            1.23.111.11 - - [31/Aug/2016:08:42:46 +0200] "GET / HTTP/1.0" 302 -
            1.23.111.11 - - [31/Aug/2016:08:42:46 +0200] "POST /wsman HTTP/1.1" 404 1053
            

            Ups. Da fragt also einer erst zweimal nach dem Root-Dokument, bekommt zweimal Status 302 (also ein Redirect - wohin?), und dann macht derselbe Client ein POST an /wsman mit 1053 Bytes Payload, aber offensichtlich gibt es /wsman nicht, also gibt's einen 404er.
            Seltsam finde ich auch, dass beim ersten GET zwei zusätzliche Felder im Log-Eintrag stehen, deren Bedeutung sich mir nicht erschließt. Und vor allem, warum die nur in der ersten Zeile vorkommen. Normalerweise hat doch jede Zeile im Access Log dieselben Felder.

            Ich vermute das hier im Intranet von irgend einem PC Netzwerkscans gemacht werden.

            Intern? Deswegen fragte ich eben, ob es eine interne IP-Adresse ist, von der die Zugriffe kommen. Es wäre doch recht unlogisch, dass jemand im Hause so einen Quatsch macht, oder? Ich hätte daher eher vermutet, dass der Unfug von draußen kommt.

            So long,
             Martin

            --
            Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
            - Douglas Adams, The Hitchhiker's Guide To The Galaxy
            1. Hallo MArtin,

              ja es ist eine interne IP Adresse. Von extern kommt sowieso niemand auf den Server drauf.

              Gruss hawk

          2. Tach!

            Ich vermute das hier im Intranet von irgend einem PC Netzwerkscans gemacht werden. Ich werde mal unsere IT Admins befragen. Einfach auch aus Interesse.

            OpenNMS kann man suchen und die Antwort lautet Network monitoring system. Das wird wohl nicht ohne Wissen der IT laufen.

            Was ist nun aber mit deinem Script? Nun, das zeigt mal wieder, dass man selbst das, was man als selbstverständlich annimmt, nicht immer gegeben ist. Konsequenz wäre also, auch in $_SERVER auf die Existenz der Einträge zu prüfen, bevor darauf zugegriffen wird.

            dedlfix.

            1. Hi,

              Was ist nun aber mit deinem Script? Nun, das zeigt mal wieder, dass man selbst das, was man als selbstverständlich annimmt, nicht immer gegeben ist. Konsequenz wäre also, auch in $_SERVER auf die Existenz der Einträge zu prüfen, bevor darauf zugegriffen wird.

              Ja genau. So ist es. Ich werde nun noch die Existens von HTTP_HOST abfragen.

              Gruss hawk

      2. Hallo und guten Morgen Hawk,

        Ok, aber dann müsste ja irgend jemand Fremdes (vielleicht ein Admin) mit telnet den Server so aufrufen. Oder könnte so etwas auch von einem Virenscanner oder anderen Netzwerktools kommen?

        MMn könnte das jedes Mitglied des Netzwerks, die IP des HTTP-Servers in die Adressleiste des Browsers eintippen.

        Wie sieht denn die Konfiguration aus? Arbeitest Du mit virtual Hosts auf dem Webserver? Wenn nicht, dann kommt eben immer der Stammhost auf den IP-Request. Dem ist es dann egal, ob zusätzlich ein Hostname angegeben ist, oder nicht.

        Grüße
        TS

        --
        es wachse der Freifunk
        http://freifunk-oberharz.de
  2. Was kann denn die Ursache sein? $_SERVER['HTTP_HOST'] müsste doch eigentlich immer gesetzt sein, wenn man über Browser die Seite aufruft oder?

    Du hast die Einschränkung genannt: "wenn man über Browser die Seite aufruft". Ich vermute, das ist nicht der Fall, z.B. bei sniffern:

    nc example.com 80
    GET /
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>403 Forbidden</title>
    </head><body>
    <h1>Forbidden</h1>
    <p>You don't have permission to access /
    on this server.<br />
    </p>
    </body></html>
    

    Tipps:

    1. error-Log mit dem access-log vergleichen.
    2. virtuellen Server einrichten auf dem Default-Server (also mit der IP-Adresse bzw. unbekannten Hostnamen) nur eine statische Fehlerseite zeigen.
  3. Hallo und guten Morgen Hawk,

    auf einem Server im lokalen Intranet läuft ein Xammp (windows Server 2012) Im Php error log finde ich immer wieder unerklärlich Einträge zu Undefined index: HTTP_HOST

    In der index.php steht folgender Code:

    <?php
    	if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS'])) {
    		$uri = 'https://';
    	} else {
    		$uri = 'http://';
    	}
    	$uri .= $_SERVER['HTTP_HOST'];
    	header('Location: '.$uri.'/ibs/projectdb.php');
    	exit;
    ?>
    Something is wrong with the XAMPP installation :-(
    

    Im error log kommen dann diese Einträge vor. Was mich wundert: Es sind immer zwei Einträge am Tag und die Uhrzeit geht immer etwas nach oben. Von zb. 08:39 am 23. Juli bis 08:42 am 28 August. Was kann denn die Ursache sein?

    Das Element "HTTP_HOST" der superglobalen Variable $_SERVER könnte ggf. nur angelegt werden, wenn der Request auch eine Zeile mit "Host:" enthalten hat. Wird aber mittels IP direkt abgefragt, findet ja keine Namensauflösung statt und der HTTP/s-Request-Header "Host" fehlt.

    Grüße
    TS

    --
    es wachse der Freifunk
    http://freifunk-oberharz.de