Sicherheitslücke in Contao ? / Vorschau für mehrere Domains
Da meiner Meinung nach jetzt zwei unterschiedliche Fragen mit teilweise gemeinsamen Kontext hier zusammengefasst wurden, hier ein kleines Menü:
Die Frage, "Sicherheitslücke in Contao (Ja oder Nein)?" findet sich ab Beitrag #25.
Die Überlegung, wie eine Vorschau auch für Multidomain-Betrieb realisert werden könnte folgt direkt im Anschluss.
#################################################
Aktualisierter Patch für TL-Version 2.8.2 ist weiter unten hinzugefügt.
siehe Betrag #24
Dieser enthält entgegen den ersten Versionen auch eine erweiterte Rechteprüfung. Details siehe auch im PDF im Beitrag #13.
TYPOlight besitzt eine sinnvolle und gute Möglichkeit mit nur einer Installation mehrere Internetseiten mit unterschiedlichen Domains (oder auch Subdomains) zu unterstützen.
Leider kann beim Aufruf der Vorschau bisher immer nur die Internetseite angeschaut werden, welche mit dem Domain-Namen des Backend übereinstimmt.
Die nachfolgende Anleitung beschreibt, wie in die Vorschau eine Auswahlmöglichkeit der zu überprüfenden Domain ergänzt werden kann und hierbei die Funktionen „Frontend User simulieren“, sowie „Unveröffentliche Elemente Anzeigen“ genutzt werden kann, ohne eine Neuanmeldung.
Diese Funktion wurde schon mehrfach gewünscht. (u.a. http://https://contao.org/issues/show/1384)
ACHTUNG: Es werden drei Dateien des TYPOlight-Core verändert. Bei einem Update geht diese Funktion wieder verloren!
Das Prinzip des Domain-Wechsels beruht auf der Tatsache, dass im Frontend an sehr wenigen Stellen der aufgerufene Domain-Name (gespeichert in Enviroment->host) zur Auswahl der zugehörigen Seite genutzt wird.
An genau diesen Stellen wird, falls ein zusätzliches Cookie gesetzt wurde, statt des aufgerufenen Domain-Namens der gewählte Domain-Namen der Vorschau eingesetzt. Die Änderungen am TYPOlight-core sind mit ein paar Zeilen Code erreicht. Der Hauptaufwand ist mal wieder die GUI um die Auswahl der Domain in die Vorschau zu bringen.
Die Anpassungen im Detail bezogen auf die Versionen 2.8.RC2 und 2.7.6 (Zeilennummer stimmen in beiden Versionen an den genannten Stellen noch überein!):
index.php im TL_ROOT-Verzeichnis:
Nach der Zeile 99 sind die folgenden beiden Zeilen einzufügen
Code:
if ($this->Input->cookie('FE_HOST') != "")
$strHost = $this->Input->cookie('FE_HOST');
Weiterhin sind die Zeilen 152-155 durch folgende zu ersetzen:
Code:
$strHost = $this->Environment->host;
if ($this->Input->cookie('FE_HOST') != "")
$strHost = $this->Input->cookie('FE_HOST');
if ($strDomain != $strHost)
{
$objHandler = new $GLOBALS['TL_PTY']['error_404']();
$objHandler->generate($objPage->id, $strDomain, $strHost);
frontend.php im Verzeichnis TL_ROOT/system/modules/frontend:
Nach der Zeile 123 sind folgende Zeilen einzufügen:
Code:
if ($this->Input->cookie('FE_HOST') != "")
$host = $this->Input->cookie('FE_HOST');
Zusätzlich werden noch die Dateien switch.php im TL_ROOT/typolight Verzeichnis und ein neues Template be_switch.tpl benötigt für die GUI. Die Dateien sind als Anlage beigefügt und enthalten umfangreichere Änderungen (zusammen 30 Zeilen Code). Als letztes wird noch ein Label in der langconfig.php angelegt.
PS: Ich hoffe, dass diese Änderung später noch einmal in das core einfließen.
Vorschau für mehrere Domains (für TL 2.8.2)
Anbei der Patch für die TL-Version 2.8.2.
Ermöglicht das wechseln der Domain in der Vorschau ohne Neuanmeldung und verhindert das Anzeigen von versteckten Inhalten für Benutzer, welche in der aktuell gewählten Domain keine Bearbeitungsrechte besitzen.
Zur Sicherheit: Siehe vorherigen Eintrag.
Known Bug: Noch wird nicht automatisch die Domain der aktuell bearbeiteten Seite vorausgewählt, wenn in die Vorschau gewechselt wird.
Vorschau für mehrere Domains (für TL 2.8.3)
Anbei der Patch für die TL-Version 2.8.3.
Ermöglicht das wechseln der Domain in der Vorschau ohne Neuanmeldung und verhindert das Anzeigen von versteckten Inhalten für Benutzer, welche in der aktuell gewählten Domain keine Bearbeitungsrechte besitzen.
Zur Sicherheit: Wie zuvor.
Known Bug: Wie zuvor.
Sicherheitslücke in Contao (Ja oder Nein?)
Sicherheitslücke in Contao: Benutzern werden Informationen angezeigt, die sie nicht sehen sollten, oder...?
Ein Problem, zwei unterschiedliche Bewertungen von Leo.
Ich möchte gerne verstehen, wie das nachfolgend beschriebenen Problem zu bewerten ist und ob es bei den beiden Bewertungen wirklich Unterschiede gibt. Falls ja, wo ist der entscheidende Unterschied?
Das grundlegende Problem ist, dass sich Benutzer in der Vorschau unveröffentlichte Elemente anzeigen lassen können, auch wenn diese in Bereichen bzw. auf Seiten liegen, auf denen der Benutzer keine Bearbeitungsrechte haben.
Dieses kann beispielsweise auf zwei Arten reproduziert werden.
1. Ast im Baum:
Ein Benutzer kann in einem Seitenbaum nur einen Ast bearbeiten, erhält aber für alle Seiten die Vorschau unveröffentlichte Elemente.
2. MultiDomain:
Ein Benutzer hat in nur einer Domain (Startpunkt einer Webseite) bearbeitungsrechte. Er kann sich jedoch auf allen Domains dieser Installation anmelden und kann dann in allen Seiten der Anmeldedomain die Vorschau unveröffentlichte Elemente nutzen auch ohne Bearbeitungsrechte.
Hierzu wurde auch schon mal ein Ticket #567 erstellt, das schon seit März 2009 existiert. Letzter Beitrag von Leo vom Mai 2010 besagt, dass "[..] lässt sich das leider nicht mit vertretbarem Aufwand umsetzen."
Andererseits bewertet Leo genau dieses Verhalten in meinem Patch als Sicherheitslücke, wie er hier beschreibt und hier noch mal aktuell darauf verweist.
Zugegeben, zwischen seinem ersten und zweiten Post hierzu wurde an dem Patch noch die Rechteprüfung verfeinert, so dass das aktuelle Patch nicht mehr erlaubt, als die ungepatchte original Version.
Ist das anzeigen unveröffentlichter Elemente, die ein Benutzer nicht Bearbeiten kann, jetzt ein Sicherheitsproblem oder nicht? Hierbei bitte beide Varianten (siehe oben) betrachten.
Ich möchte das gerne Verstehen!
PS: Bitte nicht meine Frage mit Bezug auf Leos Aussage "Schlimmer noch, er kann dort Nutzer an- und abmelden" abwiegeln. Das geht mit und ohne Patch nur für Administratoren, die können sowieso alles.
Ist also in diesem Kontext irrelevant. Das hatte Leo beim kurzen Testen wahrscheinlich übersehen, kann passieren.
In der aktuellen Version meines Patches sieht der Anwender auch nur noch die Domains, in welchen er Seiten bearbeiten darf und kann auch nicht über ein manipuliertes Cookie keine anderen Domains Auswählen.
Ja, der Anfang dieses Themas ist so ausgelegt, das hoffentlich viele das lesen und mir beim Verstehen helfen.