2012-03-23 5 views
1

Ich arbeite an einer Lösung für ein Problem, bei dem Benutzer potenziell auf Bilder (in diesem Fall PDF-Dateien) in einem Ordner von der Server-Root zugreifen können. Normalerweise validiert meine Anwendung Benutzer durch PHP-Skripts und -Sitzungen. Was derzeit nicht geschieht, verhindert, dass nicht angemeldete Benutzer möglicherweise auf die PDFs zugreifen.Schutz von Bildern vor direktem Zugriff durch Überprüfung der aktuellen PHP-Session mit mod_rewrite

Die Lösung, nach der ich suche, würde (glaube ich) mit Apache verbunden werden müssen. Ich sah eine interessante Lösung mit RewriteMap & RewriteRule, aber das Beispiel beinhaltet, dies in eine .htaccess-Datei im PDF-Verzeichnis zu setzen. Das kann mit Apache nicht gemacht werden (Fehler: RewriteMap ist hier nicht erlaubt). Ich glaube, die Rewrite-Anweisungen müssen in meine httpd.conf gehen, auf die ich zugreifen kann.

So das Beispiel, das ich gefunden (in Folge 'erlaubt RewriteMap nicht hier') ist hier: RewriteEngine On RewriteMap Auth prg: Auth.php RewriteRule $ (. *) {Auth: $ 1}

auth.php überprüft lediglich die PHP-Sitzung und leitet bei Bedarf zu einem Login-Skript weiter.

Ich lese, dass ich dies in meine httpd.conf platzieren muss. Wie würde ich angeben, dass die RewriteMap nur in einem bestimmten Verzeichnis (einschließlich Unterverzeichnissen) auftreten soll?

+0

Borrowing aus dem MVC-Muster, Sie könnten alle Anfragen an eine Bootstrap-Datei umleiten und dann je nach Berechtigungen entweder die angeforderte Datei oder eine Standarddatei laden. – Moses

+0

@Moses - darum gehe ich mehr oder weniger. Seit ich meine Frage gepostet habe, hatte ich keine Zeit mehr, Apache-Konfigurationen zu recherchieren und zu testen - also bin ich immer noch nicht sicher, wie ich den Traffic richtig umleiten kann. –

Antwort

0

Erstens, stellen Sie sicher, dass Sie das direkt in httpd.conf setzen müssen. Auf Debian-System, zum Beispiel, haben Sie 1 Datei von Virtualhost (a Virtualhost in der Regel ist eine Website) Also, müssen Sie Ihre RewriteMap in einem "Verzeichnis" so:

<Directory /full/path/to/your/pdfs> 
    RewriteEngine on 
    ... 
</Directory>