Zugangskontrolle

Erstellt: 07.03.2022 Lesedauer 2 - 3 Min.

Diese Funktionalität ist kein „Modul“. Als „Funktionserweiterung“ wird sie lediglich den Modulen zugeordnet.

Es gibt Informationen, die nur einem ausgewählten Benutzerkreis zugänglich sein sollen. In CMS-Systemen wird dafür typischerweise eine komplexe Zugangskontrolle angeboten, mit der Nutzer in Gruppen eingeteilt und diesen Gruppen Rechte zugeordnet werden können.

Für die meisten Anwendungsfälle ist das viel zu aufwändig:
  • Es genügt die Unterscheidung von „du kommst hier {nicht} rein“.
  • Die Besucher sind „handverlesen“.
Benötigt wird:
  • „Ein bisschen Code“.
  • Eine Liste der Benutzer, die „rein dürfen“. Dafür wird die E-Mail-Adresse mit einem Passwort kombiniert.
  • Eine Freigabe der Webseiten für jeden, der zu einer E-Mail-Adresse aus der Liste das korrekte Passwort kennt.

Die E-Mail-Adresse als Zugangsschlüssel für Besuchern vereinfacht den Zugriff und die Administration: Wer seine E-Mail-Adresse vergisst, hat vorrangig andere Herausforderungen als den Zugang zur damit geschützten Webseite.

„Passwort vergessen“ ist bei gelegentlichen Besuchen einer Seite dagegen durchaus nachvollziehbar ( ⸮ sowas Aufschreiben macht doch kein Mensch ⸮ ). Dafür ist die E-Mail-Adresse hinterlegt, an die ein Neues geschickt werden kann.

Voraussetzung

In der Liste proof.txt, sind zugelassenen Besucher mit ihrer E-Mail-Adresse verzeichnet. Anfangs genügt der Eintrag des Besuchers mit seiner E-Mail-Adresse:

dieadresse@diedomain.tld:

Damit ein Zugang gewährt wird, muss mit dieser Adresse ein Passwort angefordert werden („Passwort vergessen“), wofür es maintain.php im Stammverzeichnis gibt (s.u.). Es wird ein generisches Passwort an die bekannte E-Mail-Adresse mit Login-Informationen geschickt. Falls jemand vergessen wurde, kann ein Cookie-freies Formular für die Anforderung einer Freischaltung („handverlesen“…) weiterhelfen.

In der E-Mail-Liste muss der Administrator enthalten sein!

Anmelden

Die Webseiten werden mittels einer Session-Variable geschützt, die nur angelegt wird, wenn das eingegebene Passwort zur E-Mail-Adresse passt. Den Grundstein legt das Anmeldeformular, das mit dem Login-Skript erzeugt wird. Es kann auf einer beliebigen Seite stehen.

Mit diesem Ansatz ist keine Unterscheidung verschiedener Zugangsstufen möglich: Es gibt nur „drinnen“ oder „draußen“, was mit der Abfrage auf das Vorhandensein am Anfang der Seite entschieden wird. Der Zugang kann damit sogar innerhalb eines Verzeichnisses wahlweise abgelehnt werden (öffentlich/Benutzergruppe).

Mit verschiedenen, vom Benutzer abhängig generierten Session-Variablen oder deren Inhalt, könnten unterschiedliche Zugänge realisiert werden. Dafür müsste in der „proof“-Tabelle eine Zuordung und in den Zugangsskripten eine entsprechend erweitere Abfrage eingebaut werden.

Abhängig davon, ob die Session-Variable gesetzt ist, zeigt das Formular eine Anmelden- oder Abmelden-Funktion. Abhängig vom Formularschalter wird sie entfernt, was ebenfalls nach Ablauf einer einstellbaren Zeit erfolgt: Vorgabe dafür ist knapp ein halber Tag.

Bei einem Anmeldeversuch wird vom Scheitern ausgehend die Liste proof.txt nach einer passenden E-Mail-Adresse durchsucht. Bei einem Treffer wird das Passwort (genauer: Der Hash davon) abgeglichen. Ist das erfolgreich, wird die Fehlermeldung entfernt, die Session-Variable gesetzt – den Rest regelt die Session-Abfrage am Anfang der Layout-Dateien. Gibt es keine, wird auf die Startseite umgeleitet – oder auf die eventuell gewählte „Unterseite“.

Benutzerpflege

Die Datei maintain.php kann in drei verschiedenen Varianten geöffnet werden.

Im Login-Skript muss diese Seite in der dafür vorgesehenen Variable eingesetzt sein.

Passwort vergessen

Die trivialste Variante ist der Aufruf ohne Session ID. Es wird lediglich ein E-Mail-Feld angeboten. Dorthin wird ein generisches Passwort geschickt – vorausgesetzt, die Adresse steht in der Liste proof.txt.

Passwort ändern - Besucher

Für die aktuelle E-Mail-Adresse kann ein neues Passwort vergeben werden. Die E-Mail-Adresse ist unveränderlich; die kann nur der Administrator ändern, damit Manipulationen über die E-Mail-Adresse ausgeschlossen ist.

Passwort ändern - Administrator

Ist der angemeldete Benutzer identisch mit dem in conf.php hinterlegten Administrator („hart codiert“), werden Administrator-Funktionen für die Benutzerpflege angeboten.

Bitte beachten

Es werden ausschließlich Webseiten vor dem Zugriff geschützt.

Dateien, die als Download verfügbar gemacht werden, bleiben potenziell erreichbar (wenn der Pfad bekannt ist).

Sollen Daten geschützt werden, muss dies über die .htaccess-Datei realisiert werden, die mit den Benutzerdaten (proof.txt) gekoppelt wird. Weiterführende Informationen finden Sie z.B. bei SELFHTML