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.

Server Side Includes (SSI)

Grundlagen

Mit SSI lassen sich nur schwächere Sicherheitskonzepte implementieren: Der Zugriff wird auf bestimmte IP-Adressen beschränkt oder es werden nur Besucher zugelassen, die von bestimmten Referrern kommen. Allerdings kann man auch (aber leider auch nur) bloße Teile einer Seite vor "fremden" Augen schützen - anders als bei htaccess.

Zunächst muß sichergestellt sein, daß SSI-Befehle auch von Server verarbeitet werden. Wenn SSI auf dem Server installiert sind, müssen diese zusätzlich auch noch bestimmten Dateiendungen zugewiesen werden. Standardmäßig heißt die entsprechende Dateiendung .shtml. Da das Parsen der SSI-Befehle Rechenzeit kostet, ist dies nicht auf allen Servern für die Standard-HTML-Seiten mit der Endung .html gesichert. Auf dem WWW-Server der Uni Regensburg werden SSI-Befehle aber inzwischen auch bei Dateien mit dieser Endung verarbeitet. Für den WWW-Server für die Privathomepages (www-nw.uni-regensburg.de) gilt dies nur eingeschränkt.

Wenn die Verarbeitung der Befehle sichergestellt ist, können Sie (nur) den Teil der Seite verstecken, den Sie nur eingeschränkt zugänglich machen wollen. Das hat den Vorteil, daß niemals einer Ihrer Nutzer eine Fehlermeldung sieht (404 - Datei nicht gefunden). Im Gegenteil: Sie können speziell für ihn einen Hinweistext anzeigen lassen.

Die Grenze des Konzepts zeigt sich (neben der Unmöglichkeit von Passwortabfragen) dann, wenn man Nicht-HTML-Dateien schützen will, z.B. Word- oder PDF-Dokumente. Zwar kann man eine Linkseite entsprechend präparieren und dann das oben beschriebene Konzept der versteckten Datei kombinieren. Wenn aber ein Interessent die genaue URL der Datei kennt, kann er sie einfach direkt eingeben und dann die Datei downloaden.

IP-Beschränkung

Die Syntax der Befehle läßt sich leicht anhand des folgenden Beispiels erkennen:

	<!--#if expr="$REMOTE_ADDR = /^132.199./" -->
		<P>Willkommen, Besucher von der Uni Regensburg!</p>
	<!--#else -->
		<P>Sie sind nicht von der Uni Regensburg und müssen draußen bleiben!</p>
	<!--#endif -->

In der ersten Zeile habe ich den IP-Adressbereich 132.199.x.x als Berechtigten eingetragen - das sind die Rechner der Uni Regensburg. Hier könnten Sie auch einen einzelnen Rechner eintragen. Mit der Syntax der SSI lasen sich über Bool'sche Ausdrücke auch beliebige Kombinationen nicht-benachbarter IP-Adressen zulassen (Näheres dazu können Sie der Dokumentation des Apache Webservers - Kapitel mod_include - entnehmen). Nach dem else kommt dann der Text, den alle anderen sehen. Beide Gruppen sehen nur ihren jeweiligen Text, die SSI-Befehle sind nach außen nur als Leerzeilen im Quelltext zu erahnen - sie selbst werden vom Webserver nicht an die Besucher weitergegeben.

Beschränkung auf bestimmte Referrer

Auch hier wieder ein Beispiel:

	<!--#if expr="$HTTP_REFERER = http://www.uni-regensburg.de/xyz.html" -->
		<P>Willkommen, Besucher von der Seite xyz.html der Uni Regensburg!</p>
	<!--#else -->
		<P>Sie kommen nicht von der Seite xyz.html der Uni Regensburg und müssen draußen bleiben!</p>
	<!--#endif -->

Kombination mit htaccess

SSI können auch mit der Benutzerverwaltung von htaccess verknüpft werden. Dazu müssen Sie lediglich den Inhalt der Seite abhängig von bestimmten Umgebungsvariablen gestalten, wie es oben bereits beschrieben wurde.
Einziger Unterschied: Diesmal heißt die relevante (Apache-)Umgebungsvariable REMOTE_USER. Sie enthält den per htaccess authentifizierten User.

Eine solche Kombination können Sie z.B. nutzen, um unter einer URL für mehrere Nutzer verschiedene Seiten anzuzeigen.

Diese Variable können Sie auch mit anderen Skriptsprachen (z.B. PHP) auslesen.

Kombination mit PHP und anderen Skriptsprachen

Wenn Sie SSI und PHP (das hier als Beispiel für Skriptsprachen schlechthin dienen soll) kombinieren wollen, können Sie entweder den Server so konfigurieren, daß er für einen Dateityp sowohl PHP- als auch SSI-Anweisungen verarbeitet. Das ist aber wenig sinnvoll, da PHP alles kann, was auch SSI kann. Interessant kann eine Kombination nur sein, um den Rechenaufwand für das Parsen der Dateien zu verringern. Parsen ist das Durchsuchen eines Textes nach Befehlen, um diese dann umzusetzen und kann die Prozessorlast deutlich erhöhen. Wenn Sie nur wenige Seiten nach PHP parsen lassen und den Rest nach dem weniger aufwendigen SSI, kann das eventuell die Prozessorlast senken. Um dann Variablen zwischen beiden Sprachen austauschen zu können, sollten Sie diese als Argument ein der URL übergeben (nach dem Muster http://www.host.de/seite.shtml?Argument_1). Diese Variablen können sowohl mit SSI als auch mit PHP ausgewertet werden.

zurück Allgemeines | htaccess weiter

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

-
Stand: 9. Dezember 2001, Ulf Kortstock