2016-08-24 2 views
0

Ich habe eine Web-App, die JPG-Bilder in einer Datei/Upload verwaltet. Ich möchte den Zugriff auf alle Bilder innerhalb/upload von URL: domain.com/upload/image.jpg, aber gewährt Zugriff auf/page.php. Ich habe versucht, /upload/.htaccess, aber es verweigert auch den Zugriff auf meine/page.php Datei.Wie kann ich den Zugriff auf alle Dateien im Verzeichnis verweigern, aber den Zugriff von bestimmten PHP-Dateien in anderen Verzeichnissen erlauben?

Irgendwelche Vorschläge?

+0

Wie funktioniert 'page.php' "load" das Bild? Indem Sie das Bild lesen (mit 'fopen()' oder etwas) und die Bilddaten zurückgeben oder einfach auf '/ upload/image.jpg' verlinken? –

+0

Versuchen Sie Redirect-Übereinstimmung nach dem Erstellen eines Unterordners Bilder und legen Sie alle Bilder darin. Setze page.php in upload/page.php. RedirectMatch ^/upload/images/$ http://example.com/ – Rahi

+0

Danke für die Antwort @JonLin die Bilder werden geladen, indem man sie verbindet /upload/image.jpg –

Antwort

0

die Bilder von ihnen /upload/image.jpg geladen verknüpfen

Wenn Sie sie aus dem Inhalt erzeugt durch page.php verknüpfen, dann ist der einzige Weg, es zu blockieren .htaccess verwendet, ist das überprüfen Header "Referer" (sic). Dieser Header wird vom Browser gesendet, um dem Server mitzuteilen, welche URL ihm das Laden dieser Ressource befahl. Wenn jemand direkt zu einem Bild geht, kann der Referer leer sein (z. B. wenn er in die URL-Adressleiste geschrieben wird) oder wenn er von page.php verlinkt ist, dann sagt der Referer /page.php. Referer können jedoch leicht gefälscht werden, um irgendetwas zu sagen, so dass dies kein zuverlässiges Mittel ist, den Zugang zu blockieren.

In der .htaccess-Datei in Ihrem Ordner /upload/ Versuchen Sie:

RewriteEngine On 
RewriteCond %{HTTP_REFERER} !/page\.php$ 
RewriteCond %{REQUEST_URI} !\.php$ 
RewriteRule^- [L,F] 
+0

ich habe diese auf meine .htaccess-Datei: 'RewriteEngine On RewriteCond% {HTTP_REFERER}/Seite \ .php $ RewriteCond% {REQUEST_URI} \ php $' RewriteRule^- [L, F]!. ' ** Offensichtlich hinzugefügt meine Seite ** Cleared my Cache Die PHP-Seite funktioniert wie ein Charme, aber ich kann immer noch die URL in die Adressleiste eingeben und das Bild zu bekommen. –

+0

@BryanJ Wenn Sie das Bild bereits geladen haben, wird es zwischengespeichert. Haben Sie versucht, den Cache zu löschen und dann direkt zum Image zu wechseln? –

+0

Ja, ich habe meinen Cache gelöscht. –

Verwandte Themen