TobiasBuschi: Zugriff auf Dateien kontrollieren

hallo allerseits

In einem php-Skript kann man ja bekanntlich mit der überprüfung der Session die Berechtigung überprüfen um die den Inhalt der Datei anzusehen.

Bei einer normalen Datei, zum Beispiel einem Bild kann man das ja nicht, weil in diesem Bild kein Skript zur überprüfung ausgeführt wird.

Ich will die Datei jedoch vor unberechtigtem Zugriff schützen!
Wie mache ich das am besten und am Resourcenschonendsten?

Nun gibt es ja die Möglichkeiten...

... die datei mit .htaccess Zugriff zu schützen und in Form einer php-datei mit den Entsprechenden Headern sichtbar zu machen oder...

... die Datei in der Datenbank als Blob zu speichern und  und dann auch mit einem php-Skript sichtbar zu machen ...

... oder die Benutzer in der Datenbank mit den .htaccess Benutzern zu synchronisieren und dann irgendwie auch die Rechte, in der Datenbank gespeichert, mit den Rechten in der .htaccess Datei ab zu gleichen (wahrscheindlich zu kompliziert)...

kennt ihr es noch andere bzw. Resourcen-schonendere Alternativen?

Sonst ist, glaube ich, die erste Variante, die beste.
Dazu noch die Frage:

Kann man mit .htaccess folgendes anstellen?

Request:
www.asdf.ch/media/bilder/hallo.jpg

wird zu
www.asdf.ch/media/dyn-file.php?path=bilder/hallo.jpg

umgeleitet

um dann in der dyn-file.php die entsprechende datei zu überprüfen und, abhängig davon, zu schicken?

Ist das für den Server sehr aufwändig, oder wirkt sich das nicht gross auf die Performance aus?

  1. www.asdf.ch/media/bilder/hallo.jpg
    wird zu
    www.asdf.ch/media/dyn-file.php?path=bilder/hallo.jpg
    umgeleitet
    um dann in der dyn-file.php die entsprechende datei zu überprüfen und, abhängig davon, zu schicken?

    Ja, das kann man, Stichwort "mod_rewrite" beim Apache. Damit kannst du die requests sogar intern verändern, es sieht also niemand dass ein PHP Script aufgerufen wird.
    Dann einfach mit readfile() den eigentlichen Dateiinhalt ausgeben und natürlich den entsprechenden Content-Type Header setzen.

    Ist das für den Server sehr aufwändig, oder wirkt sich das nicht gross auf die Performance aus?

    Das weiss ich nicht genau... Ich glaub aber nicht dass es viel ausmacht. Kannst ja mal ein paar Testläufe machen ;)

    greetz RFZ