.htaccess: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 139: | Zeile 139: | ||
require user mik | require user mik | ||
</Limit> | </Limit> | ||
== Weblinks == | |||
{{Weblinks}} | {{Weblinks}} |
Version vom 7. Februar 2010, 15:28 Uhr
Die Datei .htaccess (engl. hypertext access, dt. Hypertext-Zugriff) ist eine Konfigurationsdatei, in der auf Webrechnern mit NCSA-kompatibler Webserver-Software (z. B. Apache HTTP Server) verzeichnisspezifische Einstellungen vorgenommen werden können. Beispielsweise lässt sich dort ein Zugriffsschutz für ein Verzeichnis oder einzelne Dateien einrichten. Aber auch Fehlerseiten oder interne Verknüpfungen ("rewrite rules") lassen sich hierüber einstellen, ohne den Webserver neu starten zu müssen: Änderungen in der Datei ".htaccess" treten sofort in Kraft. In diesen Dateien vorgenommene Einstellungen gelten im Gegensatz zu zentralen Konfigurationsdateien (z. B. "httpd.conf") nur für das Verzeichnis, in dem sie gespeichert sind, sowie allen Unterverzeichnissen. Sie können in den Unterverzeichnissen jedoch wieder überschrieben werden.
Konfiguration
Es gibt drei Konfigurationsdateien.
.htaccess | Die Zugriffsdatei, welche die Zugriffsregeln (allow, deny), den Standort der Konfigurationsdateien, die Authentifizierungsmethode und anderes speichert. |
.htgroup | Die Gruppendatei, welche die Informationen über die Mitglieder einer Gruppe speichert. Die Datei wird nur benötigt, wenn eine Gruppenzugriffskontrolle implementiert werden soll. |
.htpasswd | Die Passwortdatenbank, welche die Paare aus Benutzername und Passwort speichert. |
Damit die ".htaccess"-Dateien Einstellungen verändern dürfen, muss der Apache HTTP Server in der Datei "/etc/apache2/sites-available/default" (Ubuntu 8.04 Hardy Heron) entsprechend konfiguriert werden.
$ sudo vi /etc/apache2/sites-available/default <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride AuthConfig Order allow,deny allow from all </Directory>
Nach einem Neustart von Apache funktionieren nun die selbst erstellten ".htaccess"-Dateien.
$ sudo /etc/init.d/apache2 restart
Anwendungsbeispiele
Standardauthentifizierung
Die Passwortdaten werden aus Sicherheitsgründen nicht in der Datei ".htaccess" gespeichert, sondern in einer separaten Datei. Diese Datei sollte sich am besten ausserhalb der öffentlich zugänglichen Webverzeichnisse befinden. In einem geeigneten Verzeichnis wird mit htpasswd (unter Umständen "htpasswd2") eine versteckte neue Passwortdatei (hier ".htpasswd") mit dem Benutzer "mik" erzeugt.
$ cd /home/mik $ /usr/bin/htpasswd -c .htpasswd mik New password: Re-type new password: Adding password for user mik
Für jeden weiteren Benutzer (hier "abc") wird die Eingabe ohne den Schalter "-c" wiederholt (der steht für "create" und erzeugt die Datei). Mit derselben Syntax ist auch das Ändern der Passwörter möglich.
$ /usr/bin/htpasswd .htpasswd abc
Die Passwortdatei (hier ".htpasswd") ist eine Textdatei, welche in zwei durch Doppelpunkte getrennte Felder aufgeteilt ist, den Benutzernamen und das verschlüsselte Passwort:
$ more /home/mik/.htpasswd mik:fGG7koK2Isa6s
Erstellen der neuen versteckten Zugriffsregelndatei ".htaccess" im zu schützenden Verzeichnis. Die Verwaltung der Nutzerzugriffe für das entsprechende Verzeichnis wird dann ab sofort durch den Apache HTTP Server erfolgen. Dabei werden folgende Parameter eingesetzt:
Parameter | Beschreibung | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AuthUserFile | Standort der Passwortdatei (üblicherweise ".htpasswd") mit voller Pfadangabe. | ||||||||||
AuthGroupFile | Standort der Gruppenzugriffsdatei (üblicherweise ".htgroup") mit voller Pfadangabe. Ist keine solche notwendig, kann der Wert auf "/dev/null" gesetzt werden. | ||||||||||
AuthName | Eine benutzerdefinierte Zeichenkette, die bei Erscheinen des Authentifizierungsdialogs angezeigt wird. | ||||||||||
AuthType | Die Authentifizierungsmethode. "Basic" nutzt die Standardauthentifizierung, welche zwar effektiven Passwortschutz bietet, aber nicht gegen Abhören schützt, da Passwörter hier unverschlüsselt gesendet werden. Zudem besteht kein Schutz gegen einen Brute Force-Angriff. | ||||||||||
Limit | Angabe der zugriffsberechtigten Benutzer, welche Art von Zugang sie erhalten können (z. B. "GET", "POST", "PUT") und die Reihenfolge, in der diese Regeln ausgewertet werden. Die folgenden vier Direktiven ermöglichen eine genauere Zugriffskontrolle:
|
Eine Konfiguration könnte wie folgt aussehen.
$ vi .htaccess AuthAuthoritative Off AuthName mik AuthType Basic AuthUserFile /home/mik/.htpasswd require valid-user #<Files *.php> #Require user mik #</Files>
Eine andere Konfiguration könnte wie folgt aussehen.
$ vi .htaccess AuthUserFile /home/mik/.htpasswd AuthGroupFile /dev/null AuthName mik AuthType Basic <Limit GET POST> require user mik </Limit>
Damit der Webserver von der Passwortdatei erfährt, könnte die Konfiguration beispielsweise auch wie folgt aussehen und ans Ende der Datei "httpd.conf" eingetragen werden. Hier wird festgelegt, dass für den Zugriff auf alle Verzeichnisse unterhalb von "/var/www/privat" die einfache Authentifizierung ("AuthType Basic") genutzt werden soll. Im Webbrowser erscheint dann ein fenster mit der Passwortabfrage und der Webserver überprüft, ob die Datei "/etc/httpd/htusers" die eingegebene Kombination aus Benutzernamen und Passwort enthält. Dank des Eintrags "Require user mik" werden nur Zugriffe vom Benutzer "mik" erlaibt, alle anderen werden geblockt.
$ vi httpd.conf <Directory /var/www/privat> AuthType Basic AuthName "Kein Zutritt" AuthUserFile /etc/httpd/htusers Require user mik </Directory>
Soll eine ganz bestimmte Datei auf diesem Wege geschützt werden, so kann folgender Trick angewendet werden. Die Datei "xyz.php" wird dabei geschützt, fordert die Eingabe von Benutzername und Passwort und leitet den Nutzer dann auf das ungeschützte Skript weiter.
<meta http-equiv="refresh" content=0; url=/script/xyz.php"> |
Digest-basierte kryptographische Authentifizierung
In diesem Fall können mit Sniffern daherkommende Angreifer keine Passwörter ernten.
Erzeugen einer neuen Passwortdatenbank mit MD5-Digest-Authentifizierung unter dem Namen ".htdigest" mit dem Benutzer "mik".
$ cd /home/mik/public_html $ /usr/sbin/htdigest2 -c .htdigest [AuthName-in-.htpasswd] mik
Anpassung der Zugriffsregelndatei.
$ vi .htaccess AuthUserFile /home/mik/public_html/.htpasswd AuthGroupFile /dev/null AuthDigestFile /home/mik/public_html/.htdigest AuthName mik AuthType Digest <Limit GET POST> require user mik </Limit>
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | ger | .htaccesswbm | Enzyklopädischer Artikel |
Wikipedia | eng | .htaccesswbm | Enzyklopädischer Artikel |