2016-08-24 1 views
0

У меня есть веб-приложение, которое управляет jpg-изображениями внутри файла/загрузки. Я хочу запретить доступ ко всем изображениям внутри/загрузить с url: domain.com/upload/image.jpg, но предоставить доступ к /page.php. Я попытался /upload/.htaccess, но он также запрещает доступ к моему файлу /page.php.Как я могу запретить доступ ко всем файлам в каталоге, но разрешить доступ из определенного php-файла в другом каталоге?

Любые предложения?

+0

Как 'page.php' "нагрузка" изображение? Прочитав изображение (используя 'fopen()' или что-то еще) и вернув данные изображения или просто связав их с '/ upload/image.jpg'? –

+0

Попробуйте выполнить перенаправление после создания изображений в подпапках и поместите в него все изображения. Поместите page.php в upload/page.php. RedirectMatch ^/upload/images/$ http://example.com/ – Rahi

+0

Спасибо за ответ @JonLin изображения загружены, связав их /upload/image.jpg –

ответ

0

изображений загружаются, связывая их /upload/image.jpg

Если вы связываете их с содержанием генерируемой page.php, то единственный способ, чтобы заблокировать его с помощью Htaccess, чтобы проверить Заголовок «Referer» (sic). Этот заголовок отправляется браузером, чтобы сервер знал, какой URL-адрес сказал ему загрузить этот ресурс. Если кто-то прямо переходит к изображению, референт может быть пустым (например, если он вводит его в адресной строке URL), или если он связан с page.php, то референт скажет /page.php. Тем не менее, ссылки могут быть легко подделаны, чтобы сказать что-либо, поэтому это не является надежным средством блокировки доступа.

В файле Htaccess в вашей попробовать /upload/ папку добавления:

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

Я добавил это в мой файл .htaccess: 'RewriteEngine на RewriteCond% {HTTP_REFERER}/страница \ .php $ RewriteCond% {REQUEST_URI} \ PHP $' RewriteRule^- [L, F]!. ' ** Очевидно, добавлено мое имя страницы ** Очищено мой кеш Страница PHP работает как шарм, но я все еще могу ввести URL-адрес в адресной строке и получить изображение. –

+0

@BryanJ, если вы уже загрузили изображение, оно кэшировано. Пробовали ли вы очистить кеш, а затем попытались напрямую перейти к изображению? –

+0

Да, я очистил свой кэш. –

Смежные вопросы