|
|
Защита от hotlinking
У меня появилась очень полезная для некоторых вебмастеров
информация о .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. Вот и все, на
сэкономленные деньги купите себе халвы и наслаждайтесь!
Авторы: Михаил
Соловьев.
http://webhowto.ru
|
|
|