Zugriffsschutz per .htaccess

Mit der .htaccess lassen sich nicht nur Redirects, sondern auch ein Zugriffsschutz einrichten. Hier soll es um Grundlagen gehen aber auch um ein paar Spezialfälle, die im Alltag auch einmal vorkommen können. 

Grundlagen

Prinzipiell benötigt man für einen .htaccess-Zugriffsschutz 2 Dateien. Die .htaccess, in der der eigentliche Zugriff gesteuert wird, und die .htpasswd, in der User und Passwörter gespeichert werden. Die .htpasswd kann auch anders benannt werden aber dieser Name ist gängiger Standard. Das verhindert auch versehentliches Löschen etc.

In der .htaccess wird der Pfad zur .htpasswd definiert aber Achtung: Das muß der komplette, absolute, Dateiname sein. Wer per FTP/SFTP eingeloggt ist, sieht nur den Teil ab seinem Homedir. Den kompletten Pfad kann man sich z.B. per PHP in einem PHP-File über ein phpinfo(); oder ein 

 

echo $_SERVER['DOCUMENT_ROOT'];

 

anzeigen lassen.

Einfacher Zugriffsschutz per .htaccess

Wir benötigen eine .htaccess in dem Verzeichnis, dass wir schützen wollen. Da dieser Schutz standardmäßig auf Unterverzeichnisse vererbt wird, kann man den auch eine Ebene höher legen, wenn z.B. im eigentlichen DocRoot schon eine .htaccess liegt und man die nicht anfassen will.

.htaccess

 

AuthType Basic
AuthName "Passwortschutz"
AuthUserFile /Pfad/zur/.htpasswd
Require valid-user

 

.htpasswd

 

test: $apr1$jca82hed$zwpLJfVKRL3JMwRzkjszn/

 

Hierfür kann man sich z.B. auf https://htpasswdgenerator.de ein Passwort generieren lassen. Jeder User kommt in eine neue Zeile.

Damit haben wir die Basics erledigt

.htaccess Zugriffsschutz für bestimmte Domain

Ein Sonderfall ist der Schutz nur für eine bestimmte Domain. Z.B. bei einer Multidomain-Installation, um eine Domain noch zu verstecken. Hier im Beispiel ist es eine Subdomain "subdomain.domain.de"

 

SetEnvIf Host subdomain.domain.de passreq
AuthType Basic
AuthName "Passwortschutz" AuthUserFile /Pfad/zur/.htpasswd 
Require valid-user
Order allow,deny
Allow from all
Deny from env=passreq
Satisfy any

 

 

.htaccess Zugriffsschutz für mit Ausnahme bestimmter IPs

Ein Sonderfall ist der Schutz aber mit Ausnahem bestimmter IPs. Diese IPs muß man dann auflisten.

 

Order deny,allow
Deny from all
AuthType Basic
AuthName "Passwortschutz"
AuthUserFile /Pfad/zur/.htpasswd 
Require valid-user
allow from 123.123.123.123
allow from 234.234.234.234
Satisfy Any