» Hardware » Software » Windows » Internet » Humor » Other

Защита от hotlinking

Argon On-Line » Internet » Webmastering
 

У меня появилась очень полезная для некоторых вебмастеров информация о .htaccess… Речь идет о том, чтобы ограничить использование картинок с вашего сервера нехорошими людьми. Зачем это надо? А надо это потому, что некоторые хостинги требуют оплаты за трафик.

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

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

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

Сначала посмотрим, как это можно сделать через mod_rewrite. Для этого надо определить, откуда пришел посетитель — если со своих страниц, то пустить его к картинке. Иначе — послать далеко и надолго, а лучше всего на спонсора :) Делается это через переменную HTTP_REFERER. Вот это надо приписать в .htaccess (решение проблемы с помощью mod_rewrite взято с сайта Master-X):

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 /* http://www.YourSponsor.com/click.cgi [R,L]

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

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

SetEnvIfNoCase Referer "^http://www.webhowto.ru" local_ref=1
<FilesMatch ".(gif|jpg)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

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

Принято говорить, что, когда сервер настроен правильно, "хотлинкинг не работает". То есть картинки не воруются. На нашем сервере есть специальная утилита, проверяющая, правильно ли вы настроили сервер. Чтобы проверить свои настройки, нажмите сюда.

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

 
Еще
Оглавление раздела
Содержание / Новости

Карта сайта
О сайте
Ссылки

Форум
Обратная связь
Если ты нашел ошибку, хочешь что-то посоветовать либо поругать меня, не посчитай за труд написать об этом в следующем поле...







К началу страницы© 2002—2008 Argon