Bei der .htaccess Datei handelt es sich um eine Konfigurationsdatei, in welcher man spezielle Verzeichnis-Einstellungen auf NCSA-kompatiblen Webservern, wie zum Beispiel der Apache Webserver, vornehmen kann. Normalerweise reicht es aus, wenn der Webserver Leserechte auf die .htaccess Datei hat. In manchen Situationen werden aber auch Schreibrechte gebraucht, z.B. wenn man mit Hilfe eines PHP Skriptes den Inhalt modifizieren will. Allerdings stellt dies ein gewisses Risiko dar.

In diesem Artikel erkläre ich kurz und knapp, wie man .htaccess Dateien absichert. Hierfür wird in dieser Beschreibung angenommen, der Benutzer, mit dem das Skript ausgeführt wird, ist “apache” und die Gruppenzuweisung ist “apache”. Das ist der Standard bei Redhat-Systemen (wie Fedora) oder Gentoo im NICHT-Safe_Modus.

Im Safe_Modus muss der Benutzer, der das Skript ausführt auch der Eigentümer der Datei sein.

Wenn der Webserver Leserechte bekommen soll, sind diese Rechte vollkommen ausreichend:

400 oder r-- --- ---

unter Linux kann man diese Rechte mit folgendem Befehl vergeben:

chmod 400 .htaccess

Wenn der Webserver Lese- und Schreibrechte auf die .htaccess benötigt, sind folgende Rechte ausreichend.

600

unter Linux kann man diese Rechte mit folgendem Befehl vergeben:

chmod 600 .htaccess

Ausreichend bedeutet in diesen Zusammenhang, dass dies die minimalen vorhandenen Rechte sein müssen.

Da der Webserver nun bei beiden Lösungen Leserechte hat, bedeutet dies, dass man diese Datei über http://www.meinedomain.de/.htaccess über den Browser gezeigt bekommen würde. Um dies zu verhindert, wird in der Apache Konfiguration eine Zugriffsbegrenzung eingesetzt, die alle Dateien, die mit dem Präfix .ht beginnen, nicht aufgerufen werden können. Diese Einstellung ist standardmäßig in allen modernen Linux-Distributionen vorhanden. Falls dies doch nicht der Fall ist, kann man diese wie folgt ergänzen:

<Files ~ "^\.ht">
     Order allow,deny
     Deny from all
</Files>

Dadurch wird sichergestellt, dass Dateien wie .htaccess, .htaccass~, .htaccess_backup oder auch .htpasswd nicht über den Browser zugänglich sind.

Aktualisiert: