ich tüftle gerade an einem PHP-System mit geschützen Bereichen. Die Bereiche sind aber keine Ordner, es geht nicht darum Ordner zu schützen. User sollen nur nach Anmeldung eine Session-Id erhalten und können dann bestimmte Inhalte abrufen oder in diesen Bereichen navigieren. Bis hier hin mit PHP-Sessions easy. Jetzt will ich aber auch Dokumente, z.B. Bilder, die sich in diesem Bereich befinden schützen.
Prinzipiell geht das ganz einfach, indem ich die Bild-Requests in einer .htaccess auf ein PHP-Skript umleite, welches dann an Hand der Session-Id die Berechtigung prüft und bei Erfolg mit readfile() rausgibt. Nur: dabei würde auch bei dem popeligsten Bildchen der PHP-interpreter (300kB Arbeitsspeicher) gestartet, was, wenn ich es richtig einschätze, zu einer starken Belastung des Servers führen könnte.
Meine erste Idee war, mit
- Code: Select all
RewriteCond absoluter_cookie_pfad/sessid -f
zu testen, ob die Anfrage einer gültigen Session angehört. "sessid" will natürlich erstmal rausgefummelt sein, müsste aber gehen. Nur: der User hätte dann, wenn er pfiffig genug ist, mit dieser sessid Zugriff auf alleDateien.
Zweite Idee: Zusätzlich zur ersten Idee verschlüssele ich den Dateinmamen mit einem Private-Key und der sessid. z.B.
- Code: Select all
md5($pk.$filename.$sid)
Im Imagetag der aus einer Session generierten Seite könnte das so aussehen:
- Code: Select all
<img src='lf2g5dkdidlfijr4f5f4f5454r_chefbohrtindernase.jpg' />
In der .htaccess will ich nun den Dateinamen wieder auseinander nehmen. Nur: für eine Überprüfung müsste ich in der htaccess eine Verschlüsselung und einen Vergleich machen können. Geht das und wenn ja wie?