Im Wesentlichen war es möglich, den HTTP-Host-Header für schändliche Zwecke zu fälschen und Drupal dazu zu verleiten, in mehreren Subsystemen (insbesondere bei der Link-Generierung) einen anderen Domain-Namen zu verwenden. Mit anderen Worten, der HTTP-Host-Header muss als Benutzereingabe betrachtet werden und ist nicht vertrauenswürdig.
Um dem entgegenzuwirken $settings['trusted_host_patterns'], wurde Drupal 8 eine neue Einstellung hinzugefügt, um eine Liste "vertrauenswürdiger" Hostnamen zu konfigurieren, auf denen die Site ausgeführt werden kann. Die Einstellung muss ein Array von Mustern für reguläre Ausdrücke ohne Begrenzer sein, die die Hostnamen darstellen, deren Ausführung Sie zulassen möchten.
Wenn Sie Ihre Site beispielsweise von einem einzigen Hostnamen "www.example.com" aus betreiben, sollten Sie diesen zu Ihren Einstellungen hinzufügen (normalerweise zu finden unter ./sites/default/settings.php):
Beachten Sie ^, \.und $. Dies ist die PCRE-Syntax . Dies bedeutet nur, dass Sie "www.example.com" genau zuordnen möchten, ohne dass am Anfang und am Ende etwas anderes hinzukommt, und dass die Punkte als Punkte und nicht als Platzhalterzeichen behandelt werden sollen.
Wenn Sie von "example.com" ausführen, verwenden Sie einfach:
Wenn Sie eine Site mit mehreren Domänen und / oder Unterdomänen ausführen müssen und keine kanonische URL-Umleitung durchführen, sieht Ihre Einstellung folgendermaßen aus:
Auf diese Weise kann die Site alle Varianten von example.com und example.org ausführen, einschließlich aller Unterdomänen.
Sobald Sie $settings['trusted_host_patterns']den richtigen Wert eingestellt haben, sollten Sie wieder zu Ihrer Site navigieren können.
Sie können den Status Ihrer Einstellungen für vertrauenswürdige Hosts auch auf der Statusberichtsseite unter admin / reports / status überprüfen
Wenn Sie die Einstellung vollständig entfernen, wird der vertrauenswürdige Hostmechanismus nicht verwendet, und auf der Seite mit dem Statusbericht wird ein Fehler angezeigt. Darüber hinaus ist Ihre Site möglicherweise auch anfällig für HTTP-Host-Header-Angriffe.
Wenn Sie diese Einstellung konfiguriert haben und diese Meldung sehen, bedeutet dies wahrscheinlich, dass Sie die Syntax für reguläre Ausdrücke durcheinander gebracht haben. Nehmen Sie in diesem Fall das erste Beispiel, kopieren Sie es / fügen Sie es in Ihre Einstellungen ein und bearbeiten Sie es, um den Hostnamen wiederzugeben, unter dem Ihre Site ausgeführt wird.
Ich bin einer der Autoren des Patches und habe auch den ursprünglichen Entwurf des Änderungsdatensatzes für den Patch geschrieben (von dem ein Großteil des obigen Textes stammt). Diese Frage und Antwort soll die Fehlermeldung "hohe Googlability" geben, falls jemand darauf stößt. Wenn Sie der Meinung sind, dass Sie diese Einstellung besser erklären können, können Sie gerne Ihre eigene Antwort hinzufügen. Möglicherweise machen wir auch dieses CW.
mpdonadio
Es gibt unzählige Konfigurationen, bei denen der Drupal-Server nicht direkt erreichbar ist, sondern sich hinter einem Reverse-Proxy befindet, und dies ist nur ein Ärgernis. Es sollte einen sauberen Abmeldemechanismus geben.
Ich glaube es ist jetzt, es gab Versuche, es automatisch im Installer zu setzen, aber das wurde vorerst wieder entfernt. Wenn Sie die vertrauenswürdigen Hostnamen nicht festlegen, findet keine Überprüfung statt. Außerdem habe ich gerade erst die Verbindung zwischen mpdonadio und MPD hergestellt :)
Berdir
Ja, die automatische Konfiguration wurde aus dem Patch entfernt, für den ein Commit durchgeführt wurde. Es ist momentan "Opt-in", aber wir werden Sie warnen, wenn es nicht gesetzt ist. Es gibt ein Follow-up, drupal.org/node/2404259 , um es im Installationsprogramm festzulegen . @Berdir, ich hatte vor einiger Zeit eine Internet-Identitätskrise und als ich hier Mod wurde, wollte ich meinen Spitznamen nicht ändern :) Mein Git-Benutzername, wenn auch anders ...
mpdonadio
Wenn ich '^ theming \ .dev $' verwende, tritt folgende Fehlermeldung auf: UnexpectedValueException: Nicht vertrauenswürdiger Host "localhost" in Symfony \ Component \ HttpFoundation \ Request-> getHost () (Zeile 1221 von core / vendor / symfony / http / Symfony / Component / HttpFoundation / Request.php).
Axel Briche
6
Für die Installation von localhost können Sie den folgenden Code in Ihrer settings.php-Datei verwenden
Dies geschieht, weil trusted_host_patternsVariable in Ihrer Einstellungsdatei. Wenn Sie in der lokalen Umgebung arbeiten und diese überschreiben möchten, definieren Sie den folgenden Abschnitt in Ihrer settings.local.phpDatei:
Dies ist die einfachste Lösung, wird jedoch nicht empfohlen, da Sie die richtigen Werte festlegen sollten, um zu vermeiden, dass der HTTP-Host-Header für schändliche Zwecke gefälscht wird. Wenn Ihre Website nur auf Ihrem lokalen Server ausgeführt wird, sollte es Ihnen gut gehen.
Sie sollten mehr positive Stimmen für diese Antwort haben, da dies die ordnungsgemäße Verwendung der Datei settings.local.php definiert. Diese Einstellungen sollten wahrscheinlich nicht in settings.php definiert werden, da dies den Zweck zunichte macht, eine andere Einstellungsdatei für Ihre lokale Umgebung zu haben, die mit 3 # -Zeichen ein- und ausgeschaltet werden kann. Ein Link oder einige Informationen zum lokalen Setup können mehr Stimmen bringen.
Dimmech
2
Dieses Problem tritt auch bei Ihnen auf
<VirtualHost *:443>
wann solltest du haben
<VirtualHost *:80>
Richten Sie es in einem Nicht-SSL-Setup ein (z. B. für Entwickler- / Testumgebungen) und versuchen Sie, über Port 80 auf die Site zuzugreifen
Dies liegt an der Konfiguration des vertrauenswürdigen Hosts des Servers. Es kann produzieren, wenn Sie den Domainnamen oder ändern 'trusted_host_patterns'. Um die Probleme zu beheben, fügen Sie Ihre neue Domain auf die DRUPAL_ROOT/sites/SITE_FOLDER/settings.php(Ex: sites/defaults/settings.php)
Antworten:
Diese Fehlermeldung stammt von einer Funktion , die Drupal 8 zum Schutz vor HTTP-Host-Header-Angriffen hinzugefügt wurde . Die Funktion wird auch im Änderungsdatensatz beschrieben , der für den Patch generiert wurde.
Im Wesentlichen war es möglich, den HTTP-Host-Header für schändliche Zwecke zu fälschen und Drupal dazu zu verleiten, in mehreren Subsystemen (insbesondere bei der Link-Generierung) einen anderen Domain-Namen zu verwenden. Mit anderen Worten, der HTTP-Host-Header muss als Benutzereingabe betrachtet werden und ist nicht vertrauenswürdig.
Um dem entgegenzuwirken
$settings['trusted_host_patterns']
, wurde Drupal 8 eine neue Einstellung hinzugefügt, um eine Liste "vertrauenswürdiger" Hostnamen zu konfigurieren, auf denen die Site ausgeführt werden kann. Die Einstellung muss ein Array von Mustern für reguläre Ausdrücke ohne Begrenzer sein, die die Hostnamen darstellen, deren Ausführung Sie zulassen möchten.Wenn Sie Ihre Site beispielsweise von einem einzigen Hostnamen "www.example.com" aus betreiben, sollten Sie diesen zu Ihren Einstellungen hinzufügen (normalerweise zu finden unter
./sites/default/settings.php
):Beachten Sie
^
,\.
und$
. Dies ist die PCRE-Syntax . Dies bedeutet nur, dass Sie "www.example.com" genau zuordnen möchten, ohne dass am Anfang und am Ende etwas anderes hinzukommt, und dass die Punkte als Punkte und nicht als Platzhalterzeichen behandelt werden sollen.Wenn Sie von "example.com" ausführen, verwenden Sie einfach:
Wenn Sie eine Site mit mehreren Domänen und / oder Unterdomänen ausführen müssen und keine kanonische URL-Umleitung durchführen, sieht Ihre Einstellung folgendermaßen aus:
Auf diese Weise kann die Site alle Varianten von example.com und example.org ausführen, einschließlich aller Unterdomänen.
Sobald Sie
$settings['trusted_host_patterns']
den richtigen Wert eingestellt haben, sollten Sie wieder zu Ihrer Site navigieren können.Sie können den Status Ihrer Einstellungen für vertrauenswürdige Hosts auch auf der Statusberichtsseite unter admin / reports / status überprüfen
Wenn Sie die Einstellung vollständig entfernen, wird der vertrauenswürdige Hostmechanismus nicht verwendet, und auf der Seite mit dem Statusbericht wird ein Fehler angezeigt. Darüber hinaus ist Ihre Site möglicherweise auch anfällig für HTTP-Host-Header-Angriffe.
Wenn Sie diese Einstellung konfiguriert haben und diese Meldung sehen, bedeutet dies wahrscheinlich, dass Sie die Syntax für reguläre Ausdrücke durcheinander gebracht haben. Nehmen Sie in diesem Fall das erste Beispiel, kopieren Sie es / fügen Sie es in Ihre Einstellungen ein und bearbeiten Sie es, um den Hostnamen wiederzugeben, unter dem Ihre Site ausgeführt wird.
quelle
Für die Installation von localhost können Sie den folgenden Code in Ihrer settings.php-Datei verwenden
quelle
Dies geschieht, weil
trusted_host_patterns
Variable in Ihrer Einstellungsdatei. Wenn Sie in der lokalen Umgebung arbeiten und diese überschreiben möchten, definieren Sie den folgenden Abschnitt in Ihrersettings.local.php
Datei:Oder allgemeineres Muster :
Oder spezifischer für die lokalen Umgebungen :
Dies ist die einfachste Lösung, wird jedoch nicht empfohlen, da Sie die richtigen Werte festlegen sollten, um zu vermeiden, dass der HTTP-Host-Header für schändliche Zwecke gefälscht wird. Wenn Ihre Website nur auf Ihrem lokalen Server ausgeführt wird, sollte es Ihnen gut gehen.
Siehe: Neue Einstellung für die Konfiguration von vertrauenswürdigen Hostnamen .
quelle
Dieses Problem tritt auch bei Ihnen auf
wann solltest du haben
Richten Sie es in einem Nicht-SSL-Setup ein (z. B. für Entwickler- / Testumgebungen) und versuchen Sie, über Port 80 auf die Site zuzugreifen
quelle
Dies liegt an der Konfiguration des vertrauenswürdigen Hosts des Servers. Es kann produzieren, wenn Sie den Domainnamen oder ändern
'trusted_host_patterns'
. Um die Probleme zu beheben, fügen Sie Ihre neue Domain auf dieDRUPAL_ROOT/sites/SITE_FOLDER/settings.php
(Ex:sites/defaults/settings.php
)Beispiel: Domain name = newdomain.com
quelle