Ограничиваем прямые ссылки: .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 ...