Гостевая
Форум
Разделы
Главная страница
Js скрипты
Php скрипты
Html шаблоны
Книги по Web дизайну
Статьи


Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Защита от hotlinking

Источник: realcoding.net

Представьте себе ситуацию, когда один добрый, хороший и приятный во всех отношениях человек разместил на своем сайте коллекцию картинок - кадров из какого-нибудь популярного фильма. Картинки пользуются большой популярностью, народ активно смотрит их. Это, естественно, выливается в неплохой исходящий трафик с сервера. Для примера - этот сайт порождает трафика примерно на 5-6 Гб в месяц, и это при почти полном отсутствии картинок! Сайт же, ориентированный на картинки (ну не надо меня обвинять в поддержке xxx сайтов...), способен порождать трафик сотнями Гб. в месяц. И за все это надо платить (например, по 2.5 доллара за 1 Гб).

И вдруг этот чудесный, замечательный альтруист замечает, что трафик увеличился вдвое, при той же посещаемости. Следовательно, платить надо в два раза больше! Почему? Оказывается, какой-то крайне нехороший человек тоже сделал сайт с теми же картинками. Но, поскольку такие картинки в сети уже есть, нехороший человек решил заодно не тратить свой трафик и использовать картинки с хоста хорошего человека. И правда, тег img вовсе не запрещает использование картинок с других хостов, знай пиши полный путь. И радуется нехороший человек! Напакостил и счастлив.

Что же делать хорошему человеку? Закрывать сайт? Нет! Великий защитник человечества - .htaccess - приходит на помощь! Можно, оказывается, сделать так, чтобы картинки можно было использовать только тому хосту, на котором они находятся. И сделать это можно даже несколькими способами - либо через функции apache, либо через mod_rewrite (модуль apache, занимающийся перенаправлением на другие страницы).

Сначала посмотрим, как это можно сделать через mod_rewrite. Для этого надо определить, откуда пришел посетитель - если со своих страниц, то пустить его к картинке. Иначе - послать далеко и надолго, а лучше всего на спонсора :) Делается это через переменную http_referer. Вот это надо приписать в .htaccess:

>authuserfile /dev/null
authgroupfile
/dev/null
rewriteengine on
rewritecond
%{http_referer} !^http://www.webhowto.ru/
rewritecond %{http_referer} !^http://webhowto.ru/
rewritecond %{http_referer} !>http://www.webhowto.ru:80 [nc]
rewritecond %{http_referer} !>http://webhowto.ru:80 [nc]
rewriterule
Warning:  Unterminated comment starting line 8 in /home/internet/data/www/doc.aceweb.ru/engine/admin_panel/functions/main.php on line 217

А теперь представьте себе, как работает mod_rewrite. Вся проблема в том, что обработка запроса сервером происходит в несколько этапов. Вкратце: сначала apache обрабатывает url, а затем ставит им в соответствие файлы. Беда в том, что обработка .htaccess происходит уже после обработки url, поэтому чтобы обработать инструкции mod_rewrite корректно, apache делает два раза одно и то же. Естественно, это сильно тормозит сервер.

Есть более удобное решение. В httpd.conf в секцию, относящуюся к папке, либо в .htaccess можно добавить инструкции серверу не отдавать картинки незнакомым клиентам. Это делается так:

setenvifnocase referer ^http://www.webhowto.ru local_ref=1
<FILESMATCH ?.(gifjpg)?>
order allow,deny
allow from env=local_ref
</FILESMATCH>

Ура! Работает! В смысле, не работает! :)

Остается добавить, что вы вполне можете точно так же сделать защиту не только для jpg и gif, но и для любых других файлов, см. документацию по apache на предмет синтаксиса бокса filesmatch. Вот и все, на сэкономленные деньги купите себе халвы и наслаждайтесь!



Похожие статьи:
- Интернет-раскрутка: с чего начинать?
- Защита сайта от спамеров с использованием PHP. Практическое применение кода подтверждения с картинки
- PHP5 - Новые возможности PHP5-Zend Engine 2_0
- Введение в PHP5
- Создание гостевой книги
- Постраничный вывод из MySQL
- Защита сайта с помощью .htaccess и .htpasswd
- Риски при поисковой оптимизации интернет-сайта
- Как стать неудачником, или Десятка самых надежных способов гарантировать провал своей маркетинговой
- Как нельзя раскручивать сайты
- Использование SSI в построении сайта
- Интерпретация строковых выражений как функций
- Стиль против дизайна


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |
[0.001]