dedlfix: .htaccess Verzeinisschutz

Beitrag lesen

Hi!

Ich hoffe das es möglich ist, beim externen Zugriff, einfach eine Fehlerseite anzeigen zu lasse? Und wenn dann wie?

Wie willst du oder besser gesagt der Webserver unterscheiden, ob ein Request berechtigt ist oder nicht? Er muss dazu die Berechtigung prüfen. Wenn das der Apache machen soll, musst du dessen Userverwaltung bemühen. Wenn das nur dein Script machen soll, musst du die Auslieferung über den Apachen verhindern und eine alternative Downloadmöglichkeit erstellen.

Die beste Lösung ist, nicht öffentlich zugängliche Dinge in Verzeichnissen abzulegen, die nicht öffentlich sind. Dann schreibt man sich ein so genanntes Download-Script, das auf Anforderung und nach Autorisationsprüfung die Datei durchreicht.

Um solch ein unzugänglihces Verzeichnis zu erstellen, muss man meist erst einmal die Documentroots in Unterverzeichnisse des eigenen Kundenverzeichnisses legen.

/kunden/ToshiOzumi/   -- Kundenverzeichnis und Documentroot in einem - bisheriger Zustand
/kunden/ToshiOzumi/domain1/   -- DocumentRoot für die erste Domain
/kunden/ToshiOzumi/domain2/   -- DocumentRoot für eine zweite Domain

Die Domains sind nun so zu konfigurieren, dass sie nicht mehr auf / zeigen sondern auf /domain1/ usw. (relativ zum Kundenverzeichnis aus gesehen. Solche eine Konfigurationsmöglichkeit muss eigentlich jeder Provider bieten, der mehrere Domains pro Kunden anbietet.

Nachdem man alle Domain-DocumentRoots in Unterverzeichnisse gelegt hat, kann man sich ein Verzeichnis erstellen, auf das keine Domain zeigt

/kunden/ToshiOzumi/dateien/

Alles in diesem Verzeichnis liegende ist nun nicht mehr direkt erreichbar. Das Download-Script kann (innerhalb des DocumentRoot residierend) aber über das Dateisystem auf dieses Verzeichnis zugreifen und die Datei durchreichen (PHP: Header senden und readfile()).

Die weniger gute Möglichkeit ist, wenn man die Domains nicht wie oben beschrieben konfigurieren kann und alles im Kundenverzeichnis über das Web erreichbar ist. Dann kann man sich nur so behelfen, dass der Zugriff auf das Dateiverzeichnis über den Apachen grundsätzlich verboten wird: deny from all. Das Downloadscript liegt wie oben in einem anderen Verzeichnis und rückt nach erfolgreicher Autorisierung die Datei raus.

Lo!