Hi!
Ich empfehle dir auf jeden Fall .htaccess (oder die Serverkonfiguration) zu verwenden.
.htaccess finde ich die beste Möglichkeit für Passwortabfragen und geschützte Bereiche!
Ich hab ein kleines Tutorial geschrieben, kannst es dir ja mal durchlesen:
-----------------------------------------------------------
.htaccess - Einführung
Was ist eine .htaccess-Datei?
Die .htaccess-Datei ist eine Konfigurationsdatei, mit der man die Standardkonfiguration
des Webservers (Apache) für bestimmte Verzeichnisse ändern kann. Man speichert eine
Datei names .htaccess in dem Verzeichnis, in dem man die Konfiguartionsänderungen
machen möchte. Sie gilt für dieses Verzeichnis und alle Unterhalbliegenden.
Den Namen der .htaccess-Datei kann man mit folgendem Befehl in der Server-Konfigurationsdatei ändern:
/etc/httpd.conf
....................................
AccessFileName .conf
....................................
Welche Befehle gibt es?
Welche Befehle in einer .htaccess-Datei akzeptiert werden, wird durch 'AllowOverride' gesteuert.
Ob es überhaupt möglich ist, diese Directive in einer .htaccess-Datei zu verwenden, steht in der Dokumentation.
Um herauszufinden welches 'AllowOverride' man einfügen muss und ob es möglich ist, diese Directive zu verwenden,
genügt ein Blick auf die Homepage von Apache.
Hier ein Beispiel mit 'Require':
In der Dokumentation von Apache (unter Directives => Require) steht folgendes:
Apache-Manual
....................................
[...]
Context: directory, .htaccess
Override: AuthConfig
[...]
....................................
Das heisst, dass man diese Directive in einer .htaccess-Datei verwenden darf und
dass man vorher Require mit 'AllowOverride' in der Serverkonfiguration erlauben muss,
damit 'Require' funktioniert:
/etc/httpd.conf
....................................
AllowOverride AuthConfig
....................................
Was ist, wenn ich in tieferen Verzeichnissen Optionen wieder verbieten will?
Wieder ein Beispiel:
/usr/var/www/htdocs/board/.htaccess
....................................
Options +ExecCGI
....................................
/usr/var/www/htdocs/board/admin/.htaccess
....................................
Options Includes
....................................
Damit ist CGI im Verzeichnis 'board' erlaubt, jedoch nich im Verzeichnis 'admin'.
Eigentlich ganz einfach, oder?
Wie kann ich CGI in bestimmten Verzeichnissen erlauben?
Durch genau diese Frage, bin ich auf die Idee gekommen, ein kleines Tutorial über .htaccess zu schreiben.
Ich habe Board-Software, welche in Perl geschrieben ist demnach CGI verwendet, jedoch in allen möglichen Verzeichnissen.
Da es nicht mein eigener Server ist, auf dem ich das Board hoste, habe ich nur die .htaccess-Datei zur Verfügung.
/home/martin/public_html/bbv2/.htaccess
....................................
Options +ExecCGI
AddHandler cgi-script cgi pl
....................................
Erledigt!
Man muss 'Options' durch 'AllowOverride' erlauben (in der Serverkonfiguration), um es benutzen zu können.
In der 1. Zeile wird CGI in diesem Ordner (/home/martin/public_html/bbv2) erlaubt.
Mit der 2. Zeile werden alle Dateien, mit Endung .cgi oder .pl als CGI-Datei behandelt und ausgeführt.
Das war's!
Wie kann ich bestimmte Verzeichnisse mit einem Passwort absichern?
Das ist wohl der häufigste Grund, warum .htaccess benutzt wird - Passwortschutz!
Ok von Anfang an:
Ein Blick in die Dokumentation verrät uns, dass man 'AuthConfig' mit 'AllowOverride' erlauben muss.
/etc/httpd.conf
....................................
AllowOverride AuthConfig
....................................
Danach muss man eine Passwortdatei erstellen und evtl. eine Gruppendatei.
Die Passwortdatei wird mit 'htpasswd' erstellt, ein Tool, das bei Apache mitgeliefert wird.
SHELL
....................................
htpasswd -c /usr/local/apache/passwd/passwords
....................................
Das Flag -c wird nur beim Erstellen einer neuen Datei benutzt. Es darf nur beim Ersten User
benutzt werden, sonst wird die Datei wieder überschrieben.
Als 2. Argument folgt die Passwortdatei.
Danach sollte man die richtigen Rechte setzen, um einer Kompromittierung vorzubeugen.
SHELL
....................................
chmod root:apache /usr/local/apache/passwd/passwords
chmod 640 /usr/local/apache/passwd/passwords
....................................
Nachdem die Passwortdatei erzeugt ist, kann man sich endlich der Konfiguration zuwenden.
.htaccess
....................................
AuthType Basic
AuthName "Passwortabfrage!"
AuthUserFile /usr/local/apache/passwd/passwords
require valid-user
....................................
Zur Erklärung:
'AuthType' gibt den Typ der Authentifizierung an (Basic == Passwort eingeben). Es gibt noch andere Verfahren ,wie z.B.
die Authentifizierung per Datenbank, IP usw.
'AuthName' ist die überschrift der Dialogbox als String.
'AuthUserFile' ist die Passwortdatei. (Immer den absoluten Pfad angeben)
'require valid-user' bedeutet, dass eine Passwortdatei benutzt werden soll.
Es gibt noch viele weitere Befehle wie
.htaccess
....................................
require user tcr
....................................
Sodass nur Benutzer 'tcr' Zugang erhält.
Man kann auch Gruppen verwenden:
.htaccess
....................................
AuthGroupFile /usr/local/apache/passwd/groups
require group admins
....................................
Wobei die Gruppendatei so aussieht und sich auf die Passwortdatei bezieht:
/usr/local/apache/passwd/groups
....................................
admins: bow00 Chris tcr
....................................
Sonstige Überlegungen?
Eigentlich sollte man eine .htaccess-Datei nur benutzen, wenn man keinen Zugriff auf
die Server-Koniguration hat. Die Benutzung der Serverkonfigurationsdatei hat hauptsächlich
einen Vorteil:
Die Datei wird nur geladen, wenn der Server (neu)gestartet wird.
Folgendes Verzeichnis:
....................................
/usr/var/www/htdocs/board/hacks
....................................
Es wird in also folgenden Verzeichnissen nach einer .htaccess-Datei gesucht:
....................................
/usr/var/www/htdocs/board/hacks
/usr/var/www/htdocs/board
/usr/var/www/htdocs
....................................
Es wird tatsächlich in 3 Verzeichnissen nach einer .htaccess-Datei gesucht. Ob sie gefunden wird
oder nicht ist egal, gesucht wird auf jeden Fall.
Damit noch nicht genug:
Es wird bei jedem Neuen Laden einer Seite danach gesucht!
Bei einer größeren Site kann das zu einigen Performance-Verlusten führen.
Eines soll noch demonstriert werden:
/usr/var/www/htdocs/board/.htaccess
....................................
AddHandler cgi-script cgi pl
....................................
/etc/httpd.conf/.htaccess
....................................
<Directory /usr/var/www/htdocs/board>
AddHandler cgi-script cgi pl
</Directory>
....................................
Beide Einträge sind völlig identisch, sie machen genau das Gleiche!
Warum wird aber dann die .htaccess-Datei so oft benutzt?
Ganz einfach:
Viele Hoster hosten mehrere User auf einer einzigen Maschine, und damit jeder User seine eigenen
Einstellungen (Anmeldung, Index-Seiten) konfigurieren kann, wird die .htaccess-Datei erlaubt.
Das war's, hoffe ihr habt was gelernt, denn dann gibt es ein paar Kiddies weniger!
written by tcr
-----------------------------------------------------------
mfg
tcr