www.kortstock.de
  [über] [Word-Doku] [Pegasus Mail] [WWW und HTML] -

Verzeichnisschutz mit htaccess sowie SSI/PHP

Zurück zur Übersicht Verzeichnisschutz mit htaccess und SSI.

Allgemeines

Will man auf einzelne Seiten oder ein ganzes Verzeichnis nur bestimmte Nutzer zugreifen lassen, bieten sich grundsätzlich zwei Möglichkeiten: Einmal kann man mit Java oder Javascript eine Passwortabfrage oder etwas Ähnliches implementieren. Diese Mechanismen wirken auf dem Rechner des Besuchers, also client-seitig. Zum Zweiten kann man Features des Webservers einsetzen, um den Zugriff (server-seitig) einzuschränken. Beide Methoden haben ihre Vor- und Nachteile, die hier zunächst kurz beschrieben werden sollen.

Client-Methoden

Client-Methoden sind vor allem kleine Programme in JavaScript oder Java, die jeweils von dem Browser des Besuchers ausgeführt werden. Zu den client-seitigen Methoden möchte ich auch das Verstecken eines Dateinamens / einer URL zählen (dazu unten gleich mehr), da hierbei die Sicherung darin besteht, daß der Nutzer den genauen Dateinamen nicht kennen soll. Kennt er ihn doch, wird der Server die Datei ohne weitere Nachfrage herausgeben.
Einen Sonderfall stellt die Abfrage des Referrers (Seite, von der aus die aktuelle Seite angesurft wurde, näher auch dazu unten) dar. Zwar prüft hier eventuell der Server diesen Wert (je nach verwendeter Methode), aber er wertet dabei die Angaben des Browsers, also des Clients, aus.

Server-Methoden

Server-Methoden sind vor allem die Verwendung von speziellen Script-Sprachen, die vom Webserver ausgeführt (geparst) werden. Zu nennen sind vor allem Server Side Includes (SSI), PHP und allgemein CGI-Skripte. Außerdem gibt es aus der Microsoft-Welt noch die ASP (Active Server Pages), auf die hier aber nicht näher eingegangen werden soll.

Diese Dokumentation befaßt sich mit der Einrichtung von Zugriffsbegrenzungen auf einem Apache-Server. Dabei werden teilweise die besonderen Bedingungen an der Universität Regensburg (Unix-Hauptwebserver) in Betracht gezogen und als Beispiel verwendet.

Ich gehe dabei auf zwei Konzepte ein: Passwortschutz und Zugriffsbeschränkung auf Nutzer, die von einer bestimmten IP-Adresse (also von einem bestimmten Rechner oder einer Gruppe von Rechnern) oder einer speziellen Seite (Referrer) kommen. Beschrieben werden die Möglichkeiten mit SSI, htaccess und PHP.

einzelne Konzepte

Relativ unabhängig von der Frage, ob die Schutzmechanismen auf dem Client oder dem Server ablaufen, kann man bestimmte Formen der Zugriffsbeschränkung unterscheiden:

Sicherheitslücke bei der Übertragung

Allen hier beschriebenen Möglichkeiten ist gemeinsam, daß (wenn nicht besondere Maßnahmen getroffen wurden) die Übertragung des Passworts vom Browser zum Webserver unverschlüsselt erfolgt. Da im Internet die Daten immer in einer Art Staffette von einem Rechner zum nächsten weitergereicht werden, bis sie am Ziel ankommen, stellt dies durchaus ein ernstes Sicherheitsproblem dar.

Dieses Loch können Sie nur stopfen, wenn Sie eine SSL-Verschlüsselung Ihrer Webseite einsetzen. Sie erkennen entsprechende Seiten an der URL. Diese beginnt immer mit https://.... Streng genommen kann auch in der Adreßzeile des Browsers http://... angezeigt werden, wenn der Aufruf einer Methode aus einem Formular (FORM ACTION) auf eine https-Verbindung verweist.
Immer müssen Sie allerdings auf die Länge des Schlüssels achten, da wegen restriktiver Exportbestimmungen der USA lange Zeit nur kastrierte Software (Server und Browser) am Markt waren, jedenfalls bei den Standard-Produkten. Wenn etwa Ihr Nutzer noch eine alte Version von Netscape hat, hilft die Sicherheit des Webservers auch nicht wirklich.

Mit Java lassen sich auch eigene Verschlüsselungsfunktionen implementieren, einige Online-Banken gehen diesen Weg. Der Aufwand ist aber immens.

häufiger Fehler

Besonders bei client-basierten Methoden (der versteckten Datei) wird häufig der Fehler gemacht, das Verzeichnis abrufbar zu halten. Damit ist folgendes gemeint: Wenn man ein Verzeichnis auf einen Webserver aufruft (z.B. http:/www.kortstock.de/WWW-Kurs/), muß der Webserver darauf ja irgendwie reagieren. Ein Verzeichnis ist keine Datei, kann also nicht so ohne weiteres angezeigt werden. Der Webserver wird also nach einer Standard-Datei suchen, die sozusagen für das Verzeichnis steht. Je nach Einstellung und Server heißt die Datei meist index.html oder default.htm. Wenn diese Datei nicht gefunden wird (und auch die Dateinamen, die in einer entsprechenden Liste folgen, z.B. index.html, index.shtml, index.htm), wird standardmäßig eine Verzeichnisübersicht, also eine Liste aller Dateien angezeigt. Dann ist es natürlich leicht herauszufinden, wo sich die versteckte Datei befindet.

Als Gegenmaßnahme sollte man (wenn man Zugriff auf die Serverkonfiguration hat) zuerst dafür sorgen, daß die Auflistung des Verzeichnisinhalts unterbleibt. Meistens wird zudem standardmäißg z.B. die Datei index.html angezeigt. Dann muß man nur noch dafür sorgen, daß diese Datei auch wirklich existiert, was auch ohne Zugriff auf die Serverkonfiguration möglich ist. Hier reicht es dann einfach, eine leere Seite oder einen kurzen Hinweis auf den Verzeichnisschutz einzubauen.

Wenn Sie eine client-basierte Methoden verwenden, haben Sie so zumindest ein Scheunentor geschlossen, allerdings auch noch keine wirkliche Sicherheit erreicht.

weiterführende Literatur und Links

Jonas Wellmann hat für eine Hausarbeit einiges an Literatur und Links zu diesem Thema zusammengestellt. Vielen Dank dafür an dieser Stelle!

Server Side Includes (SSI) weiter

Zurück zur Übersicht Verzeichnisschutz mit htaccess und SSI.

-
Stand: 1. September 2003, Ulf Kortstock