Webserver/htaccess/Verzeichnisoptionen

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Informationen zu diesem Text

Lesedauer
einfach
Schwierigkeitsgrad
20min
Vorausgesetztes Wissen

Mit Hilfe einer .htaccess-Datei können Sie alle zentralen Verzeichnis-Optionen, die in der Konfiguration des Webservers eingestellt sind, für das entsprechende Verzeichnis und seine Unterverzeichnisse ändern. Voraussetzung ist allerdings, dass in der zentralen Webserver-Konfiguration mindestens AllowOverride Options Indexes FileInfo eingetragen ist. Wenn nicht, dann werden Angaben für andere Verzeichnis-Optionen in Ihrer .htaccess-Datei ignoriert.

Verzeichnis-Optionen einstellen[Bearbeiten]

Options[Bearbeiten]

.htacces-Datei
# Datei für Verzeichnis /bilder
Options +ExecCGI -Indexes
DirectoryIndex erste.htm start.htm

Mit Options können Sie verschiedene wichtige Grundeinstellungen ändern, die der Webserver für Verzeichnisse verwendet. Hinter Options können Sie eine oder mehrere der folgenden Angaben notieren:

  • All erlaubt alles bis auf das Definieren alternativer Inhalte. Dies ist die Voreinstellung und gilt auch, wenn Sie nichts explizit angeben möchten.
  • +ExecCGI erlaubt das Ausführen von CGI-Scripts im Verzeichnis, falls es zentral nur im definierten CGI-Verzeichnis erlaubt ist, und -ExecCGI verhindert es, sofern es zentral in allen Verzeichnissen erlaubt ist.
  • +Includes erlaubt das Ausführen von Server Side Includes im Verzeichnis, falls es zentral verboten ist, und -Includes verhindert es, sofern es zentral erlaubt ist.
  • +IncludesNOEXEC erlaubt das Ausführen von Server Side Includes, die kein CGI-Script ausführen, -IncludesNOEXEC verbietet solche Server Side Includes.
  • +Indexes erlaubt Verzeichnis-Browsing, falls es zentral verboten ist, und -Indexes verhindert es, sofern es zentral erlaubt ist. Beim Verzeichnis-Browsing wird der Inhalt des Verzeichnisses im Browser aufgelistet, falls nur das Verzeichnis aufgerufen wird (z.B. https://www.example.com/bilder/) und dort keine Datei mit einem Namen zu finden ist, der „Index-Funktion“ hat.
  • +MultiViews erlaubt das Definieren nach unten alternativer Inhalte, -MultiViews schaltet es aus.

Im Normalfall ist der Webserver so konfiguriert, dass er das Stöbern im Verzeichnis zulässt, falls dort keine Datei mit Index-Funktion existiert. Das sind in der Einstellung der meisten Webserver Dateien mit Namen wie index.htm oder index.html.

  • DirectoryIndex: damit können Sie andere Dateinamen bestimmen, die in diesem Verzeichnis und seinen Unterverzeichnissen als Dateien mit Index-Funktion gelten. Sie können beliebig viele Dateinamen angeben, welche dann in der Reihenfolge ihrer Angabe geprüft werden, falls mehrere von ihnen gleichzeitig im selben Verzeichnis existieren.
Beachten Sie: Sie müssen die Vorzeichen - und + nicht unbedingt angeben. Werden sie angegeben, so bewirken sie eine Korrektur eventuell in der zentralen Konfuguration vorhandener Einstellungen. Werden sie nicht angegeben, so werden eventuelle Voreinstellungen überschrieben.

Weitere Einstellungen zu SSI[Bearbeiten]

Um Dateien mit der Endung .html durch den Server nach SSI-Anweisungen durchsuchen zu lassen, bzw. dem Nutzer .shtml-Dateien als .html-Dateien zu präsentieren, gibt es verschiedene Möglichkeiten, von denen je nach System und Vorlieben der X-Bit-Hack oder das Umschreiben der URL verwendet werden sollten:

X-Bit-Hack[Bearbeiten]

Beim X-Bit-Hack werden HTML-Dateien mit SSI-Anweisungen in den Dateiberechtigungen als ausführbar markiert (das X-Bit wird gesetzt, beispielsweise per chmod +x seitenname.html) und der Webserver damit angewiesen, diese Dateien wie .shtml-Dateien zu behandeln. Da die Dateiberechtigungen nicht an den Client übermittelt werden, bekommt der Nutzer davon nichts mit.
Um diese Funktion nutzen zu können, muss sie per XBitHack on aktiviert werden.

Hinweis

Der X-Bit-Hack funktioniert nur auf Systemen, die das Setzen der Unix-Dateirechte unterstützen, also nicht unter Windows.

Diese Option funktioniert nur, weil das Markieren von Textdateien, die normalerweise keinen durch das System ausführbaren Code beinhalten, eigentlich keinen Sinn macht und dies daher vom Webserver zur Speicherung der Information „Datei enthält SSI-Anweisungen“ genutzt werden kann.

Umschreiben der UR L[Bearbeiten]

Eine weitere Möglichkeit stellt das Umschreiben der URL von *.html auf *.shtml dar, sodass .shtml-Dateien dem Client als .html-Dateien präsentiert werden.

  • .html-Dateien nach SSI-Anweisungen durchsuchen
RewriteEngine on
# Prüft, ob Datei oder Ordner mit dem Namen existiert
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Leitet dann ggf. intern auf eine gleichnamige shtml-Datei um...
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.shtml

Durchsuchen von HTML-Dateien nach SSI-Anweisungen[Bearbeiten]

Beachten Sie: Diese Option sollten Sie aus Gründen der Performance nicht verwenden.

Es ist auch möglich, den Webserver anzuweisen, alle Dateien mit der Endung .html nach SSI-Anweisungen zu durchsuchen, was den Webserver über Gebühr ausbremsen kann:

  • .html-Dateien nach SSI-Anweisungen durchsuchen
AddType text/html .html
AddOutputFilter INCLUDES .html

Verzeichnis-Browsing einstellen[Bearbeiten]

Wenn Sie Verzeichnis-Browsing erlauben, sodass also bei einem Aufruf wie https://www.example.com/bilder/ der Verzeichnisinhalt aufgelistet wird, können Sie die Optik beeinflussen, mit der die Verzeichnislisten im Browser angezeigt werden. Leichter verständlich wird das, wenn Sie sich klarmachen, dass der Webserver anhand des eingelesenen Verzeichnisinhaltes dynamisch HTML-Code generiert, den der Browser dann anzeigt. Mit den hier beschriebenen Optionen können Sie diese HTML-Ausgabe beeinflussen.

Die folgende Abbildung zeigt, wie ein Browser ein Verzeichnislisting anzeigen könnte, bei dem eigene Dateibeschreibungen und Symbolgrafiken zum Einsatz kommen:

Beispiel einer Verzeichnisdarstellung
Beispiel: .htaccess-Datei

# Datei für Verzeichnis /bilder
FancyIndexing On
AddDescription "HTML-Datei, anzeigbar" .htm .html
AddDescription "GIF-Grafik, anzeigbar" .gif
AddDescription "JPEG-Grafik, anzeigbar" .jpg
AddDescription "ZIP-Archiv, downloadbar" .zip
AddIcon /src/blau.gif html htm
AddIcon /src/gelb.gif gif jpg
AddIcon /src/gruen.gif ^^DIRECTORY^^
AddIcon /src/blau.gif ^^BLANKICON^^
  • FancyIndexing On: schaltet eigene Optionen zur Darstellung des Verzeichnislistings ein. Die Einträge der übrigen Zeilen im obigen Beispiel definieren solche Anzeigeoptionen.


  • AddDescription: fügt einen kurzen Beschreibungstext hinzu, der hinter einer oder mehreren bestimmten Dateien stehen soll. Zuerst notieren Sie in Anführungszeichen den gewünschten Text, und dahinter geben Sie an, für welche Datei oder Dateien der Text gelten soll. Dabei können Sie wie im Beispiel oben Wildcards benutzen.
  • AddIcon: bestimmt eine eigene Symbolgrafik für eine oder mehrere bestimmte Dateien. Dabei geben Sie den URI der Symbolgrafik an. Bei Adressen auf der eigenen Domain können Sie mit absoluten Pfadnamen arbeiten, wobei das Wurzelverzeichnis des Web-Projekts der Ausgangspunkt ist. Hinter der Angabe zur gewünschten Grafikdatei können Sie eine oder mehrere Dateiendungen notieren. Dateien mit dieser Endung erhalten dann bei der Anzeige die entsprechende Symbolgrafik. Anstelle von Dateiendungen können Sie auch reservierte Ausdrücke wie ^^DIRECTORY^^ (Verzeichnisse erhalten diese Symbolgrafik) oder ^^BLANKICON^^ (Dateien ohne Dateiendung oder nicht zuzuordnende Dateien erhalten diese Symbolgrafik) notieren.

Weitere Optionen sind ebenfalls möglich, aber im obigen Beispiel nicht notiert:


  • AddType: ordnet MIME-Typen eine oder mehrere Dateiendungen zu.
    AddType text/xml adr ordnet beispielsweise Dateien mit *.adr dem MIME-Typ text/xml zu.
  • AddEncoding ordnet dem Sub-Typ eines MIME-Typen eine oder mehrere Dateiendungen zu.
    AddEncoding javascript jscr: ordnet beispielsweise Dateien mit *.jscr dem MIME-Typ text/javascript zu.
  • AddIconByType: ordnet einem MIME-Typen eine Symbolgrafik zu. Alle Dateien dieses MIME-Typs werden dann mit dieser Symbolgrafik angezeigt.
    AddIconByType text/xml /src/struktur.gif ordnet beispielsweise Dateien mit dem MIME-Typ text/xml eine Grafik mit der Adresse /src/struktur.gif zu.
  • AddIconByEncoding: orndet dem Sub-Typ eines MIME-Typen eine Symbolgrafik zu.
    AddIconByEncoding javascript /src/action.gif ordnet beispielsweise Dateien mit dem MIME-Subtyp javascript eine Grafik mit der Adresse /src/action.gif zu.


  • DefaultIcon: bestimmt eine Symbolgrafik für alle Fälle, die nicht durch speziellere Angaben abgedeckt sind.
    DefaultIcon /src/punkt.gif: bestimmt beispielsweise, dass alle Verzeichniseinträge, die sich nicht anderweitig zu Symbolgrafiken zuordnen lassen, die Grafik mit der Adresse /src/punkt.gif erhalten.


  • HeaderName: bestimmt eine eigene Datei für die Anzeige der Kopfinformation zum Verzeichnis.
    HeaderName kopf.htm: bestimmt beispielsweise, dass die Anzeige der Kopfinformationen aus der Datei kopf.htm im gleichen Verzeichnis geholt werden.


  • ReadmeName: bestimmt eine Datei, in der zusätzliche Informationen zum Verzeichnis stehen, z.B. Copyright-Hinweise. Diese Datei wird unterhalb der Verzeichnisliste eingebunden.
    ReadmeName fuss.htm bestimmt beispielsweise, dass die Anzeige der Liesmich-Informationen aus der Datei fuss.htm im gleichen Verzeichnis geholt wird.


  • AddAlt können Sie einer verwendeten Symbolgrafik einen HTML-Alternativtext zuordnen, falls die Grafik nicht angezeigt werden kann.
    AddAlt "das ist eine Grafikdatei" gelb.gif bestimmt beispielsweise den Alternativtext "das ist eine Grafikdatei für die Symbolgrafik gelb.gif".
  • AddAltByType können Sie allen Symbolgrafiken vor Dateien eines bestimmten MIME-Typs einen gemeinsamen HTML-Alternativtext zuordnen.
    AddAltByType "Das ist eine XML-basierte Datei" text/xml: ordnet beispielsweise allen Symbolgrafiken, die vor einer Datei mit dem MIME-Typ text/xml stehen, den angegebenen Alternativtext zu.
  • AddAltByEncoding: ordnet allen Symbolgrafiken vor Dateien eines bestimmten MIME-Subtyps einen gemeinsamen HTML-Alternativtext zu.
    AddAltByEncoding "Das ist eine XML-basierte Datei" javascript ordnet beispielsweise allen Symbolgrafiken, die vor einer Datei mit dem MIME-Subtyp javascript stehen, den angegebenen Alternativtext zu.


  • DirectoryIndex: legt fest, welche Dateinamen Index-Funktion erhalten, dass heißt, welche Datei ausgeliefert wird, wenn der Client eine URL in der Form https://www.example/ ohne Angabe eines speziellen Dateinamens anfordert. Sie können mehrere Dateinamen angeben, die entsprechend ihrer Reihenfolge vom Server gesucht werden. Die Datei mit dem ersten Namen aus dieser Auflistung, die dann auch im durchsuchten Verzeichnis gefunden wird, liefert der Server aus.


  • IndexIgnore: gibt Dateien an, die nicht im Verzeichnislisting auftauchen sollen.
    IndexIgnore kopf.htm fuss.htm nacktbild.jpg *.bmp: bestimmt beispielsweise, dass die Dateien kopf.htm, fuss.htm, nacktbild.jpg sowie alle Dateien mit der Endung .bmp nicht angezeigt werden.


  • IndexOrderDefault wird die Sortierung bestimmt. Per Voreinstellung werden die Verzeichniseinträge alphabetisch aufsteigend nach Dateinamen angezeigt.
    IndexOrderDefault Descending Name: sortiert nach Dateinamen absteigend
    IndexOrderDefault Ascending Date: aufsteigend nach Zeitstempel
    IndexOrderDefault Descending Size: absteigend nach Dateigröße
    IndexOrderDefault Ascending Description: aufsteigend nach Dateikurzbeschreibung.


  • IndexOptions: legt schließlich weitere Einzeloptionen fest.
    IndexOptions IconHeight=12 IconWidth=14 IconsAreLinks ScanHTMLTitles legt beispielsweise fest, dass Icongrafiken in der fixen Höhe von 12 Pixeln und der fixen Breite von 14 Pixeln angezeigt werden. Die Icons sind außerdem als Links anklickbar und rufen die dahinter angezeigte Datei oder das Verzeichnis auf. In der Spalte für Dateibeschreibungen werden im Fall von HTML-Dateien die Inhalte der darin definierten title-Elemente ausgelesen und als Kurzbeschreibung zur Datei angezeigt.

Weitere Optionen sind:

  • SuppressColumnSorting zeigt die Verzeichniseinträge unsortiert an
  • SuppressDescription unterdrückt Kurzbeschreibungen
  • SuppressLastModified unterdrückt Zeitstempel bei den Einträgen
  • SuppressSize unterdrückt anzeige von Dateigrößen

Security by Obscurity[Bearbeiten]

Security through obscurity (deutsch „Sicherheit durch Unklarheit“) ist ein Prinzip in der Computer- und Netzwerksicherheit. Es geht davon aus, dass das Sichtbarmachen aller Skripte und Daten eines Webprojekts zu einer Gefahr führt, da Hacker dann genau wissen, welche Dateien sie ausspähen können. Auch wenn das Prinzip kritisiert wird, da man davon ausgehen muss, dass Hacker die Architektur moderner Webprojekte kennen und sich nicht auf diese Unklarheit verlassen kann, sollte man auf den Einsatz des Verzeichnis-Browsing weitgehend verzichten und es wenn überhaupt, nur für Bilder-Ordner zulassen.