Webbasierte Adressdatenbank

.htaccess - Passwortschutz von Dateien mit einem Webserver
Jeder Webserver besitzt eine zentrale Konfigurationsdatei, in der die Eigenschaften, Dienste und Zugriffsrechte gerergelt werden. Hier können dann auch Einstellungen erfolgen, welche bestimmte Verzeichnisse durch Passwörter schützen. Wir wollen uns hier auf den Webserver Apache beschränken. Die Konfigurationsdateien liegen normalerweise unter /etc/httpd/ oder bei Windows, wenn der Apache auf der Platte D installiert wurde unter D:/Apache/conf. Üblicherweise verwendet man nur die Datei httpd.conf, allerdings kann diese Datei in drei einzelne Dateien (httpd.conf, access.conf und srm.conf) aufgesplittet sein. Die Ausführungen gelten für Linux und Windows. Hinweise, wie üblicherweise die Verzeichnisse von Webserver organisiert sind, kann man unter Webserver, eine Einführung nachlesen.

Uns interresiert nun, wie wir ein Verzeichnis unterhalb des cgi-bin Verzeichnisses vor unberechtigten Zugriffen schützen können. Angenommen wir haben folgende Verzeichnisstruktur:

    cgi-bin
        |
        --stammtisch
                |
                ---Mitglieder
                         |
                         -- ...
    

Hier wollen wir alles unterhalb Mitglieder schützen. zuerst suchen wir mit einem Texteditor in der hhtpd.conf nach ".htaccess". Dort sollte folgende stehen (ggfs entsprechend zu ergänzen):

    AccessFileName .htaccess
    <Files .htaccess>
    order allow,deny
    deny from all
    </Files>
    

Damit verhindern wir, daß die Datei .htaccess von einem Browser eingesehen werden kann. Wenn wir nun noch folgende Zeilen in die Config Datei einfügen:

    <Directory "/usr/local/httpd/cgi-bin/stammtisch/Mitglieder">
    AllowOverride All
    </Directory>
    

teilen wir dem Webserver mit ,das alle Direktiven auf das angegebene Verzeichnis von dem .htaccess Mechanismus überschrieben werden. (Der Pfad sieht bei Windows in etwa so aus: D:/Apache/cgi-bin/stammtisch/Mitglieder) Um nun die Perl Programme in diesem Verzeichnis nutzen zu können erfordert dies eine Autentifizierung des jeweiligen Benutzers. Damit nun auch beim Wechsel in das angegebnene Verzeichnis automatisch ein Fenster aufpopt, das die Eingabe der Benutzerkennung und des Passwortes erfragt, fehlen noch zwei weitere Dateien. Die dezentrale .htaccess Datei (dezentral deswegen, da, je nach <Directory> Direktive ganz unterschiedliche .htaccess Dateien in unterschiedlichen Verzeichnissen verwendet werden können), sowie die dazugehörende .htpasswd Datei, in der die Passwörter abgelegt sind. Unter Linux sind die Passwörter verschlüsselt, auch hier wieder die Einwegverschlüsselung, verschlüsseln möglich, entschlüsseln nicht. Bei der Windows Variante werden die Passwörter in der .htpasswd unverschlüsselt abgelegt, da Windows das notwendige Tool crypt nicht kennt. Die .htaccess Datei könnte folgendermasen aussehen:

    AuthUserFile "D:/Sicherheit/.htpasswd"
    AuthGroupFile /dev/null
    AuthName ByPassword
    AuthType Basic
    <Limit GET POST>
    require valid-user
    </Limit>
    

Es wird hier fetsgelegt, das über ein Passwort die Autentifizierung erfolgt, welches in der Datei .htpasswd abgelegt ist. Diese befindet sich aus Sicherheitsgründen, außerhalb der durch den Webserver erreichbaren Verzeichnisse. Jetzt fehlt nur noch die .htpasswd Datei. Für Windows ist das ganz einfach: mit einem beliebigen ASCII Editor (nicht Word oder Wordpad) schreiben wir Benutzername:Passwort in die .htpasswd Datei. Unter Linux wechsel wir in das gewünschte Verzeichnis und erzeugen die Datei mit:

    htpasswd -c passwordfile benutzername
    

Man wird dann aufgefordert ein Password für benutzername einzugeben und zu wiederholen. Der Schalter -c erzeugt das Passwordfile, läßt man ihn weg, kann ein bestehendes File geändert werden (neue Benutzer hinzugefügt oder Passwörter bestehender Benutzer geändert werden).

Literaturhinweise:

Zurück zum Anfang dieses Projekts.