26 November

Weg mit der Tilde

Auf einigen Webservern stösst man schonmal auf URLs, die eine Tilde (~), z.B. in der Form http://www.domain.tld/~user/, enthalten.
Mit der Tilde wird in der Regel ein Benutzerverzeichnis gekennzeichnet, der Name hinter der Tilde ist der Accountname des jeweiligen Nutzers.
Verantwortlich dafür ist das Modul mod_userdir.
Wenn die Tilde in dem URL allerdings stört, kommt man mit mod_userdir nicht weiter.
Man könnte zwar versuchen, den URL mittels Rewrite Regeln umzuformen, um die Tilde loszuwerden, aber warum so kompliziert, wenn es auch einfacher geht.
Das selbe, was mit mod_userdir erreicht wird, kann man auch mit mod_alias erreichen, vielleicht sogar etwas eleganter, zumindest aber ohne die Tilde.
Mit der AliasMatch Direktive kann man ein Verzeichnis oder eine Datei ausserhalb des eigentlichen Serververzeichnisses (z.B. die User-Verzeichnisse) einem URL zuweisen.
Um zum Beispiel http://www.domain.tld/userpages/username/ auf die entsprechenden User-Verzeichnisse bzw. deren Webinhalte unter /home/user/www/ zeigen zu lassen, kann man die AliasMatch Direktive wie folgt anwenden:
AliasMatch ^/userpages/([^/]*)/?(.*) /home/$1/www/$2 
Ein Aufruf von http://www.domain.tld/userpages/Paul/index.html würde z.B. die Homepage des Users Paul unter /home/Paul/www/index.html zurückliefern.

13 November

WebDAV

Das Modul mod_dav stellt WebDAV-Funktionalität zur Verfügung.
WebDAV bedeutet Web-based Distributed Authoring and Versioning und ist eine Erweiterung des HTTP-Protokolls.
Es erlaubt, Dateien und Verzeichnisse direkt via HTTP auf dem webserver zu bearbeiten.
Mögliche Funktionen sind u.a. das Erzeugen, Verschieben oder Kopieren von Dateien oder auch das Löschen von Ressourcen direkt auf dem Server, vorrausgesetzt, es wird ein entsprechender Client eingesetzt.
Macromedia Dreamweaver, Adobe GoLive und Microsoft Office z.B. sind WebDAV fähig.

Zum Modul mod_dav gehört noch das Modul mod_dav_fs, es arbeitet als Support Modul für mod_dav und ermöglicht es diesem auf Ressourcen innerhalb des Server Filesystems zuzugreifen.
I.R. sollte man beide Module einbinden.
Eingebunden werden die Module mit
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
und aktivieren kann man DAV z.B. so
DavLockDB /usr/local/apache/var/DavLock

<Location />
Dav On

AuthType Basic
AuthName DAV
AuthUserFile user.passwd

<LimitExcept GET POST HEAD OPTIONS>
require user admin
</LimitExcept>
</Location>
In diesem Beispiel wird die Basic-Authentifikation verwendet.
Aus Sicherheitsgründen sollte man aber besser die Digest-Authentifikation oder SSL verwenden.

Um zu verhindern, dass verschiedene User gleichzeitig Änderungen an der selben Datei vornehmen, verwendet das DAV Modul eine Lock-Datenbank. In welcher Datei diese Datenbank abgelegt werden soll, wird dem DAV-Modul mit der Direktive DavLockDB mitgeteilt.
Als Argument wird dabei der Dateiname angegeben.
DavLockDB /usr/local/apache/var/DavLock
Dem DAV-Modul stehen noch die Direktiven DavDepthInfinity und DavMinTimeout zur Seite.
Solange DavDepthInfinity nicht auf on gesetzt ist, wird der Apache Anfragen mit der HTTP-Methode PROPFIND, bei denen der Header Infinity übermittelt wird, ignorieren.
Eine solche Anfrage birgt die Möglichkeit eines DOS Angriffs.
DavDepthInfinity steht standardmäßig auf off
Greift ein DAV-Client auf eine Ressource zu, so kann er angeben, für wie lange er ein Ressource-Lock auf diese Ressource haben will.
Wird die Direktive DavMinTimeout mit einem Wert größer als dem default Wert 0 konfiguriert, wird diese Ressource-Lock Anfrage des DAV-Clients ignoriert und stattdessen der konfigurierte Wert vorgegeben.
Standardmäßig hat DavMinTimeout den Wert 0.
Die Angabe des Timeout-Wertes erfolgt in Sekunden.
<Location />
Dav On
DavMinTimeout 200
...
...
</Location>

tags: , ,

03 November

Login nur über eine vorbestimmte Seite zulassen

Wenn man möchte, dass die User sich nur von einer speziellen Seite aus einloggen können, kann das hier in der .htaccess durchaus hilfreich sein:
AuthUserFile /pfad/zur/passwort/datei/.htpasswd
AuthGroupFile /dev/null
AuthName "Nur für Mitglieder"
AuthType Basic

<limit GET PUT POST>
require valid-user
</limit>

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)*deinedomain.de/ [NC]
RewriteRule /* http://www.deinedomain.de/login.html [L,R]
Ein Wechsel in den passwortgeschützten Bereich ist mit diesem Beispiel nur noch über einen Link von der Seite login.html möglich.
Hilft auch gegen URL Konstruktionen wie z.B.:
http://username:passwort@deinedomain.de/memberarea/index.html

tags:

20:03:34 - Holger Struck - 3 Kommentare - Kategorie: Tipps/Tricks