разрешить доступ к изображениям только с определенной HTML-страницы - PullRequest
2 голосов
/ 12 января 2012

У меня есть разные пользователи для моего сайта, владеющие разными изображениями, которые все хранятся в одной папке. Изображения хранятся в пошаговом режиме, 1.jpg, 2.jpg и т. Д. Пользователь может просматривать эти изображения на определенной странице php. Теперь я хочу ограничить доступ к этим изображениям только через эту страницу php, чтобы они не могли просто перечислить все имена файлов, чтобы увидеть изображения других пользователей.

Я думал сделать это с файлом .htaccess, который хранится помимо изображений в /shop/img/userimg/ и будет выглядеть примерно так:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/shop/shop.php [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]

Мой сайт является дочерним (как вы можете видеть: / shop /), и страница php для просмотра этих изображений будет shop.php.

Теперь, возможно ли это вообще? Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Обратите внимание, что заголовок реферера нельзя доверять.Некоторые прокси и брандмауэр полностью удаляют заголовок, поэтому вы должны учитывать, что он отсутствует (для этого и нужна вторая строка)

RewriteCond %{HTTP_REFERER} !/shop/shop\.php$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,L]
1 голос
/ 12 января 2012

Попробуйте добавить следующее в файл htaccess.

RewriteEngine On
RewriteBase /

#if the referer (page request came from) does not contain shop.php
RewriteCond %{HTTP_REFERER} !/shop/shop\.php [NC]
#and it is a request for images, then send a 403 forbidden
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,L]
...