dedlfix: HTTPS Protokoll Auflösung PHP

Beitrag lesen

Tach!

wenn möglich nimm

$_SERVER['SERVER_NAME']

statt $_SERVER['HTTP_HOST']. Denn der Host:-Header kommt vom User und ist daher unzuverlässig — sogar unsicher.

Der Host-Header ist ein Bestandteil des Protokolls, der benötigt wird, um den richtigen VHost zu finden. Wenn der falsch ist, geht der Request anderswohin und kommt gar nicht an diesem PHP-Script vorbei. Das heißt, die möglichen Werte in $_SERVER['HTTP_HOST'] entsprechen exakt der Anzahl der konfigurierten ServerAlias dieses Vhosts plus 1 für den ServerName. Oder sie ist begrenzt unbestimmt, wenn ein * als Bestandteil des Namens verwendet wurde: *.example.com.

Es gibt zwei Spezialfälle. Wenn der Apache ohne VHosts läuft und sämtliche Requests an die unter Listen konfigurierte IP-Adresse nebst Port annimmt, dann kann im Host stehen was will. Der zweite Fall ist, dass kein VHost mit dem Hostnamen gefunden werden kann, dann geht der Request zum Default-Host, welches die erste VHost-Konfiguration im Apachen ist. Der Request kommt dann aber immer da an, solange ein DNS-Eintrag auf die IP-Adresse des Servers verweist. Den Default-VHost sollte man separat konfigurieren und keinem Projekt zuweisen, damit auf diesem Projekt keine Requests aufgrund von Fehlkonfiguration landen.

Ich sehe kein Problem darin, dass das PHP-Script irgendwelche Werte zu sehen bekommt, die sich nicht nachvollziehbar mit der Konfiguration des Apachen zuzüglich DNS begründen lassen.

Der IIS oder andere Server können sich anders verhalten, aber auch nicht grundlegend.

dedlfix.