====== 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'));