Verzeichnisse und Dateien mit Passwort schützen

Schutz via .htaccess

.htaccess-Dateien sind verzeichnisspezifisch. Speichern Sie die .htaccess-Datei also in demjenigen Verzeichnis ab, in dem die zu schützenden Daten liegen. Sie können wahlweise das ganze Verzeichnis mit all seinen Unterverzeichnissen oder nur bestimmte Dateien oder Dateitypen schützen. Sie können den Passwortschutz außerdem wahlweise für einzelne Benutzer oder für ganze Benutzergruppen einrichten. Auch Kombinationen beider Formen sind möglich. Damit der Verzeichnisschutz mit Passwort funktioniert, genügt die .htaccess-Datei alleine allerdings nicht. Sie brauchen zusätzlich eine Datei, in der die Benutzernamen und die zugehörigen Passwörter stehen. Falls Sie mit Benutzergruppen arbeiten, benötigen Sie außerdem noch eine Datei, in der die Benutzergruppen definiert werden. Auch diese beiden anderen Dateien werden mit einem beliebigen Texteditor erstellt.

Eine ausführliche Anleitung zum Verzeichnisschutz via .htaccess finden Sie unter SELFHTML

Einfacher Verzeichnisschutz

Um einen einfachen Passwortschutz anzulegen, benötigen Sie zwei Dateien, .htaccess und .htpasswd. In .htaccess wird der Verzeichnisschutz definiert und auf die zugehörige Passwortdatei .htpasswd verwiesen.

.htaccess Beispieldatei:

AuthName "password protected"
AuthType Basic
AuthUserFile /var/www/web33/public_html/www/secure/.htpasswd

Require valid-user

Mittels AuthUserFile definieren Sie den vollständigen Dateipfad zur Passwortdatei.

ACHTUNG! .htaccess unterstützt keine relativen Dateipfade! Geben Sie stets die kompletten absoluten Pfade an (inkl. /var/www/webXX/), selbst wenn sich Ihre .htpasswd-Datei im selben Verzeichnis befindet.

Die Passwortdatei enthält pro Zeile die Paare Benutzername:Passwort, wobei das Passwort verschlüsselt ist. Die Verschlüsselung eines Passworts können Sie mit Hilfe eines .htpasswd-Generators erreichen.

.htpasswd Beispieldatei:

test:$1$ohiNuXQU$.yDdn7OhfhN.2RprzQggA0
anne:$1$08jxmucS$xvHUxr/uvEJZ8l0K1n6Pf/
kurtli:$1$ZCSnR9eu$4be8GZyqplAXHjjlA7ZH.1

Laden Sie die beiden Dateien mittels FTP in das zu schützende Verzeichnis. Das Verzeichnis und sämtliche darunterliegenden Dateien sind nun passwortgeschützt.

SECURITY: Wir empfehlen Ihnen, Ihre .htpasswd Datei(en) innerhalb Ihrem /files-Verzeichnis abzulegen und nicht innerhalb dem Webroot /public_html/www (siehe Verzeichnisstruktur).

Unser Webserver verhindert zwar das Herunterladen von .htaccess und .htpasswd Dateien. Trotzdem ist es sicherheitstechnisch sinnvoller, ein kritische Datei wie .htpasswd nicht im Webroot abzulegen.

Wenn Sie die Passwörter für Ihre .htpasswd-Datei selbst erzeugen mittels dem Unix-commands htpasswd, empfehlen wir die Verwendung des -s Parameters:

htpasswd -s .htpasswd username

Dadurch erzeugen Sie Passwort-Hashes mit der sichereren SHA-1 Funktion. Standardmässig verwendet htpasswd je nach System MD5 resp. CRYPT-Verschlüsselung, wobei MD5 nach heutigen Erkenntnissen nicht mehr genügend sicher ist gegen brute-force Attacken.

AuthMySQL

Onlime Webhosting unterstützt neben dem Einfachen Verzeichnisschutz ebenfalls das Apache-Modul mod_auth_mysql. Sie können also Ihre Benutzernamen & Passwörter bequem in einer MySQL-Datenbank verwalten und den herkömmlichen Passwort-Schutz via .htaccess verwenden.

.htaccess Beispieldatei:

AuthName "password protected"
AuthType Basic
AuthBasicAuthoritative Off
AuthUserFile /dev/null
AuthMySQL On
AuthMySQL_Authoritative on
AuthMySQL_Host localhost
AuthMySQL_DB usr_web33_1
AuthMySQL_User usr_web33_1
AuthMySQL_Password xxxxxxxx
AuthMySQL_Password_Table htaccess
AuthMySQL_Username_Field username
AuthMySQL_Password_Field password
AuthMySQL_Encryption_Types PHP_MD5
require valid-user

In obigem Beispiel haben wir als Verschlüsslungsmethode PHP_MD5 verwendet, d.h. die Passwörter müssen mit md5 verschlüsselt in der Datenbank eingetragen werden. Eine mögliche MySQL-Tabellenstruktur sieht so aus:

CREATE TABLE `htaccess` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(255) NOT NULL,
  `password` CHAR(32) DEFAULT NULL,
  PRIMARY KEY  (`id`),
) TYPE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

Eintrag eines Testusers „test“ mit Passwort „1234“:

INSERT INTO `htaccess` (`username`, `password`) VALUES('test', MD5('1234'));

mod_auth_mysql unterstützt folgende Verschlüsselungsmethoden für das Passwort-Feld:

AuthMySQL_Encryption_Types Plaintext Crypt_DES Crypt_MD5 Crypt PHP_MD5 SHA1Sum MySQL
 
dev/htaccess.txt · Zuletzt geändert: 2011/04/01 12:12 von phi
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki