Ответить Новая тема Новый опрос 
 Запрет в .htaccess на скачивание изображений
cls
Новичок
Сообщений: 5
Регистрация: 25-02-2014


25-02-2014 21:06
Подскажите, как через .htaccess в Престе организовать запрет на прямое скачивание изображений, например через редирект на index.html?

Перепробовал уже кучу вариантов, но проблема в том, что они срабатывают только в админке и на фронте, а при прямом линке на файл нет...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
cls
Новичок
Сообщений: 5
Регистрация: 25-02-2014


25-02-2014 21:27
Сейчас остановился на варианте:
RewriteCond %{HTTP_HOST} ^mysite.com$
RewriteRule ^(.*)+4+(.*)+\\.jpg$ %{ENV:REWRITEBASE}index.html [L]
т.е. все запросы изображений, в пути или имени которых встречается цифра 4 перенаправляются на index.html.
На фронте это правило срабатывает, но при обращении mysite.com/img/p/4/4.jpg я картинку вижу.

В чём я неправ?

П.с. Правило стоит в самом начале и должно срабатывать первым. После него больше ничего не выполняется, т.к. стоит флаг L.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
geomagi
Профессионал
Сообщений: 1327
Регистрация: 12-11-2010


25-02-2014 22:45
Ограничиваем прямые ссылки: .htaccess

Позже я узнал, что самый простой и распространённый способ защиты изображений — это настроить соответствующим образом .htaccess. Можно не только запретить прямые ссылки на изображения, но и указать заглушку, которая будет отображаться на сторонних ресурсах вместо оригинальных изображений с вашего сайта. Вот пример такой конфигурации:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|png)$ http://i.imgur.com/qX4w7.gif [L]

Первая строка содержит директиву, которая включает работу механизма преобразований. Здесь всё просто. Второй строкой мы блокируем любые сайты, кроме нашего собственного mysite.com. Код [NC] означает «без вариантов», иными словами регистронезависимое соответствие URL. Третьей строкой мы разрешаем пустые рефералы. И, наконец, последняя строка мачит все файлы с расширением JPEG, JPG, GIF или PNG и заменяет их изображением qX4w7.gif с сервера imgur.com.

При необходимости можно поступть иначе: запретить прямые ссылки на изображения для конкретных доменов.

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?myspace\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?blogspot\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?livejournal\.com/ [NC]
RewriteRule .*\.(jpe?g|gif|png)$ http://i.imgur.com/qX4w7.gif [L]

Каждый RewriteCond, кроме последнего, должен содержать код [NC, OR]. OR означает «или следующий», т.е. совпадение с текущим доменом или следующим.

Также вместо изображения-заглушки можно вернуть HTTP ошибку с кодом 403:

RewriteRule .*\.(jpe?g|gif|png)$ - [F]

Важно: не пытайтесь вернуть вместо изображений HTML страницу. Вы можете вернуть либо другое изображение, либоHTTP-ошибку.

P.S идея и исполнение не мое, взято с соседнего форума [hide]http://habrahabr.ru/post/176299/[/hide]так что не смотрел.


Сообщение отредактировано geomagi 25-02-2014 19:46 ...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
cls
Новичок
Сообщений: 5
Регистрация: 25-02-2014


26-02-2014 00:04
Спасибо, но этот вариант я уже пробовал, он работает только если прямая ссылка на изображение находится на стороннем сайте. От попытки просто в браузере набрать что-то типа mysite.com/img/p/4/4.jpg она не спасает...

Собственно задачу уже решил по другому. Наследовал в оверрайде класс ImageManagerCore и переопределил в нём метод write так, что он основному изображению, при его добавлении через админку, устанавливает права 440 и написал временный контроллер, который единожды рекурсивно переопределил права для всех существующих основных изображений на те-же 440. Это позволило получать доступ к изображениям только для владельца и запретила какие либо попытки скачать файл "извне".


Сообщение отредактировано cls 25-02-2014 19:07 ...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос