Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Apache запрет на картинку, Apache запрет на картинку 
:(
    Опции темы
Axotnik
Дата 31.3.2011, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



Добрый день, уважаемые! У меня в каталоге есть пхп-скрипт и картинка. Пхп-скрипт  выводит картинку  в браузер.
Вопрос - как можно запретить прямой доступ к картинке с адресной строки браузера, но оставить возможность показывать картинку через пхп-скрипт? 
Пример: картинка - http://mysite.ru/img/img1.jpg ; пхп-скрипт - http://mysite.ru/img/my.php.
Если перейти через http://mysite.ru/img/my.php, то картинка должна отображаться, если на прямую http://mysite.ru/img/img1.jpg то  нет.

Заранее благодарю.
PM MAIL   Вверх
Wolf1994
Дата 31.3.2011, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



1. Установить права на папку, не позволяющие обращаться к ней извне, но достаточные для доступа скриптом.
2. Скопировать в папку файл .htaccess с командами:
Код

RewriteEngine On
RewriteRule ^.+\.jpg$ /page404.html [L,NS]
#где page404.html - страница с сообщением об ошибке.

или:
Код

RewriteEngine On
RewriteRule ^.+\.jpg$ - [F] [L,NS]
#что должно привести к запрету на доступ к папке по HTTP


Это сообщение отредактировал(а) Wolf1994 - 31.3.2011, 14:41
PM MAIL WWW   Вверх
Axotnik
Дата 31.3.2011, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



А какие именно права нужны для папки?
А когда создаю файл .htaccess, доступ к картинке запрещен, но она также не отображается и через скрипт.
Код

<?php
echo "<img oncontextmenu=\"return false\" src=\"img1.jpg\" alt=\"\" />";
?



Это сообщение отредактировал(а) Axotnik - 31.3.2011, 16:01
PM MAIL   Вверх
Wolf1994
Дата 31.3.2011, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Точно не знаю, но, кажется, права на публичный доступ к файлу и на чтение его процессом Apache, запущенным с определёнными привилегиями, отличаются. Можно найти это отличие опытным путём.

Верно: приведённый пример блокирует любой доступ к файлам по HTTP. Если нужно сделать так, чтобы при обращении к графическому файлу он передавался на обработку скрипту, то можно использовать такой .htaccess:

Код

RewriteEngine On
RewriteRule ^(.+\.jpg)$ - /my.php?img=$1 [L,NS]
#при обращении к любой картинке откроется скрипт /my.php,
#в котором переменная $_GET ["img"] будет содержать URL картинки.

...Либо можно обращаться непосредственно к PHP скрипту, используя полную блокировку файлов с расширением "JPEG". В таком случае вышеприведённые примеры запрещения доступа по HTTP не повлияют на чтение файла скриптом.

Это сообщение отредактировал(а) Wolf1994 - 31.3.2011, 16:29
PM MAIL WWW   Вверх
Nigel
Дата 31.3.2011, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

Репутация: 7
Всего: 19



Либо используйте механизм x-sendfile, тогда физическое расположение файлов может быть любым, либо делайте запрет как показали выше, читая саму картинку при этом php скриптом.
PM MAIL   Вверх
Axotnik
Дата 31.3.2011, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



а можно пример, а то что б не пробовал - все равно не отображается.
PM MAIL   Вверх
Wolf1994
Дата 31.3.2011, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Скрипт не отображает картинку при запросе "http://mysite.ru/img/my.php", после добавления ".htaccess", но до этого этот же скрипт нормально её выводил?
PM MAIL WWW   Вверх
Axotnik
Дата 1.4.2011, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



да. до этого норм.
PM MAIL   Вверх
Wolf1994
Дата 1.4.2011, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Цитата(Axotnik @  31.3.2011,  16:00 Найти цитируемый пост)
А когда создаю файл .htaccess, доступ к картинке запрещен, но она также не отображается и через скрипт.

echo "<img oncontextmenu=\"return false\" src=\"img1.jpg\" alt=\"\" />";


Не отображается при использовании этого HTML кода?

PM MAIL WWW   Вверх
Axotnik
Дата 1.4.2011, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



да
PM MAIL   Вверх
Wolf1994
Дата 1.4.2011, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Понятно.

В таком случае, вопрос может быть решён с помощью проверки источника обращения к файлу:

Код

RewriteEngine On
RewriteCond %{HTTP_REFERER} !my\.php [NC]
RewriteRule ^.+\.jpg$ - [F]


100% защиты это не даст, но задачу решит.
PM MAIL WWW   Вверх
Axotnik
Дата 1.4.2011, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



задачу не решает. При обращении http://mysite.ru/img/img1.jpg к картинке картинка отображается. 
Через скрипт тоже отображается. 
PM MAIL   Вверх
Wolf1994
Дата 1.4.2011, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Данные инструкции были помещены в пустой файл ".htaccess" в папке "img":

Код

RewriteEngine On
RewriteCond %{HTTP_REFERER} !my\.php [NC]
RewriteRule ^.+\.jpg$ - [F]


После чего через адресную строку браузера был запрошен файл "img/img1.jpg" и файл "img/my.php" и в обоих случаях картинка загрузилась?
PM MAIL WWW   Вверх
Axotnik
Дата 1.4.2011, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



да
PM MAIL   Вверх
Wolf1994
Дата 1.4.2011, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 3
Всего: 29



Ясно.

Приведённый последним пример должен был заблокировать картинку при обращении не из скрипта "my.php". Видимо, где-то в данном коде допущена ошибка. Можете попробовать использовать этот подход: проверку на HTTP_REFERER для "JPEG" файлов и составить более корректный ".htaccess".
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.1335 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.