Passwortschutz für Verzeichnisse mit .htaccess


Mit Hilfe dieser Methode können Verzeichnisse (samt Unterverzeichnisse und aller darin enthaltenen Dateien) mit einem Benutzernamen/Passwort zugriffsgeschützt werden.

Hinweis: Diese Anleitung bezieht sich ausschließlich auf Unix-/Linux-Server! Auf Groß-/Kleinschreibung und Zeichensetzung achten!

Im folgenden Beispiel heißt der zu schützende Ordner "secured". In diesem wird eine einfache Text-Datei mit dem Namen .htaccess angelegt (Punkt nicht vergessen!) - mit untenstehendem Inhalt:

# .htaccess-Datei fuer Web-Verzeichnis /secured (Kommentarzeile)
AuthType Basic
AuthName "Sicherheits-Bereich"
AuthUserFile /[absoluter_Pfad]/secured/.htpasswd
require valid-user


In der zweiten notwendigen Datei namens .htpasswd wird der Benutzername und das Passwort festgelegt. Diese Datei wurde in obiger .htaccess-Datei durch "AuthUserFile" bekanntgegeben. Sie muss also nicht im selben Ordner liegen (in obiger Datei tut sie es), aber es muss der absolute Pfad vom Wurzelverzeichnis der Servers angegeben werden (dafür gegebenenfalls den Hoster fragen). Im Optimalfall liegt diese .htpasswd-Datei ausserhalb des Webverzeichnises. Eine Variante (von mehreren) ist die einfache Angabe von Benutzernamen und Passwort (ohne Gruppen zu benutzen). Der Benutzername wird im Klartext geschrieben, das Passwort wird mit der crypt-Routine verschlüsselt (theoretisch eine Ein-Weg-Verschlüsselung).

Beispiel: Benutzername = Test, Passwort = F9Xl5Lhe
Die .htpasswd würde dann wie folgt aussehen:

# .htpasswd-Datei
Test:$1$8SmwgBbb$CtM4X86rW8VLPL3YPK0lo0


Aufbau also "Benutzername:Passwort-Hash" (mehrmaliges Verschlüsseln erzeugt jedesmal einen anderen Hash-Wert).
Die dafür notwendige Verschlüsselungsroutine um aus dem Klartext-Passwort einen Hashwert des verschlüsselten Passwortes zu erzeugen finden Sie auf der Crypt-Verschlüsselung-Seite.
Pro Zeile eine Kombination (mehrere User sind natürlich möglich!).


Dieser Schutzmechanismus wirkt auf HTTP-Ebene und ist damit wesentlich sicherer als CGI-Skripte oder gar JavaScript. Trotzdem schützt diese Methode nur gegen unerlaubte Zugriffe von Webbrowsern, nicht jedoch von Zugriffen mit anderen Protokollen wie FTP.