contao/test — Issue #1325: HTTP_HOST und HTTP_X_FORWARDED_HOST erzeugen in Kombination fehlerhafte base
Author: importer
Created: 2011-11-29 07:44:17+00:00
State: open
Labels: Defect, framework, Invalid

Es gibt ein Problem, wenn HTTP_HOST bzw. SERVER_NAME denselben Wert beinhalten wie HTTP_X_FORWARDED_HOST.
Dann liefert die fuer #1002 umgeschriebene Funktionalitaet in Environment.php http://meine.domain.tld/meine.domain.tld/ als base zurueck.

Ich schlage (als workaround mindestens) folgende Aenderung in Environment.php Zeile 300ff:

```
protected function url()
{
$xhost = $this->httpXForwardedHost();
$protocol = $this->ssl() ? 'https://' : 'http://';
// return $protocol . (

![](empty($xhost) ? $xhost . '/' : '') . $this->httpHost();
$host = $this->httpHost();
return $protocol . ()empty($xhost) ? $xhost . '/' : '') . ($host != $xhost ? $host : '');
}
```

Generell sollte man sich ueberlegen, ob man den Wert von HTTP_X_FORWARDED_HOST ueberhaupt irgendwo verwendet bzw. ob derselbige benoetigt wird (2.8RC2 verwendet es nur innerhalb von Environment.php worin es protected deklariert ist. Extensions, welche httpXForwardedHost als property der Klasse Environment verwenden sind mir keine bekannt), da man ihn ohne Probleme spoofen kann, da er nicht vom Server selbst gesetzt wird sondern vom client uebergeben.
Ebenfalls ist mir noch unklar, wie wir uns verhalten sollten, wenn in HTTP_X_FORWARDED_HOST mehrere proxies enthalten sind.
HTTP_X_FORWARDED_HOST kann eine Liste von Komma separierten Werten beinhalten, welche alle proxies darstellen durch welche der Request gegangen ist.
Siehe hierzu auch http://dev.rubyonrails.org/ticket/3397

Was mir ebenfalls nicht so ganz einleuchtet, ist das generelle appenden der domain an den HTTP_X_FORWARDED_HOST Parameter.
Dies scheint mir doch eine explizite Proxy Konfiguration vorauszusetzen, welche derartig gestaltete requests unterstuetzt. Als recht wahrscheinlich kommt mir dies nur bei https Konfigurationen vor, wo der Provider die connections durch seinen eigene Domain routet um Zertifikate zu sparen (https://provider.tld/kundendomain.de).
Eine solche Konfiguration beim schlichten vorhanden sein des HTTP_X_FORWARDED_HOST header voraus zu setzen geht jedoch im Allgemeinen nicht.
Ich bitte darum zu klaeren, weshalb diese concatenierende Notation in den Code aufgenommen wurde und ob sie wirklich benoetigt wird.
Sollte sie benoetigt werden, benoetigen wir einen Weg dies ad-hoc zu aktivieren/deaktivieren bzw. zu erkennen wann es keinen Sinn macht.

Angeregt wurden die Untersuchungen des HTTP_X_FORWARDED_HOST handlings von folgendem Thread im Forum: http://typolight-community.de/showthread.php?t=4726

--- _Originally created by xtra on December 28th, 2009, at 08:19am (ID 1325)_