====== Zugriffsschutz mit Apache (.htaccess) ====== [[wpde>.htaccess]] ist eine einfache Möglichkeit ganze Ordner mit einem einfach Passwortschutz zu versehen. Darüber hinaus können auch spezielle Einstellungen für Ordner konfiguriert werden. :!: Die Konfiguration durch .htaccess-Datei muss in der Apache-Konfiguration aktiviert sein (standardmäßig ist "AllowOverride None" aktiviert): AllowOverride AuthConfig * [[http://de.selfhtml.org/servercgi/server/htaccess.htm|Selfhtml zu htaccess]] * [[http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/|Stupid htaccess Tricks]] ===== Beispiel ===== ==== .htaccess ==== * Diese **Datei in den zu schützenden Ordner** legen! # .htaccess-Datei für ein Web-Verzeichnis AuthType Basic AuthName "Geheimer Bereich" AuthUserFile .htpasswd Require user NAME * oder **zentral in der Apache-Konfiguration** innerhalb eines virtuelles Host (statt "/" kann auch ein einzelnes Unterverzeichnis angegeben werden: "/geheim"): AuthType Basic AuthName "Geheimer Bereich" AuthUserFile /etc/apache2/htusers Require valid-user ==== .htpasswd ==== Passwörter verschlüsselt mit Bcrypt ablegen: **Datei anlegen mit erstem Benutzer** "BENUTZERNAME": htpasswd -c -B /Pfad/.htpasswd BENUTZERNAME # Die Datei würde so aussehen, bei Passwort 123: BENUTZERNAME:$2y$05$7dj5wXAYbPs4hIg/c0Pm5eB8o/za6cpshdRJjRVbL2AChzhnb2VTq Anschließend **weitere Benutzer hinzufügen**: htpasswd -s /Pfad/.htpasswd BENUTZERNAME ===== Authentifizierung gegen mysql ===== FIXME md5-hashes sind nicht sicher, es sollte eine alternative benutzt werden! apt-get install libapache-mod-auth-mysql AuthName "Bitte Benutzername und Passwort eingeben" AuthMySQL On AuthMySQL_Host localhost AuthMySQL_User DB_BENUTZERNAME AuthMySQL_Password DB_PASSWORT AuthMySQL_DB DATENBAK AuthMySQL_Password_Table TABELLE_MIT_USERN AuthMySQL_Username_Field FELD_MIT_BENUTZERNAMEN AuthMySQL_Password_Field FELD_MIT_PASSWOERTERN AuthMySQL_Encryption_Types Plaintext AuthMySQL_Encrypted_Passwords Off AuthType Basic require valid-user Besser wäre es allerdings nur die md5-Hashes abzuspeichern: AuthMySQL_Encryption_Types PHP_MD5 AuthMySQL_Encrypted_Passwords On - Passwort-Feld vom Typ varchar(32) - Neue Benutzer so in die Datenbank eintragen: Insert into TABELLE_MIT_USERN (FELD_MIT_BENUTZERNAMEN, FELD_MIT_PASSWOERTERN ) Values ('User1', md5('geheim'));