Хотлинк
Хотлинк (англ. hotlink) — включение в веб-страницу файлов-изображений или других ресурсов с чужого сервера.
Основной вред хотлинкинга заключается в том, что пользователь, встраивая на свой сайт изображения с другого сервера, неправомерно использует его вычислительные мощности, что приводит к перегрузкам сервера и неработоспособности чужого сайта, к лишним финансовым расходам владельца исходного сайта в случае оплаты за исходящий трафик.
Владелец сайта может бороться с этим, проверяя переменную HTTP_REFERER (например, через директивы веб-сервера Apache в модуле mod_rewrite). Если HTTP_REFERER не совпадает с именем своего сервера, то посетителю может выдаваться другое изображение: самый маленький по размеру gif-файл размером 1x1 пиксель, файл с надписью, что данная картинка была украдена с оригинального сервера, и т. п.
Пример запрета хотлинкинга с помощью модуля Apache mod_rewrite
[править | править код]Код добавляется в файл конфигурации веб-сервера (httpd.conf) или в локальный файл конфигурации хоста (.htaccess).
# Предотвращаем загрузку изображений с хоста www.server.com,
# за исключением файла баннера banner.jpg и файла заглушки
# null.gif
# Вместо любого запрошенного изображения вставляем заглушку
# null.gif размером в несколько килобайт, находящуюся по адресу
# http://www.server.com/images/null.gif
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?server\.ru/ [NC]
RewriteCond %{REQUEST_URI} !null\.gif$ [NC]
RewriteRule \.(jpg|jpeg|gif|bmp|png)$ http://server.ru/images/null.gif [L]
Пример запрета хотлинкинга с помощью nginx
[править | править код]Код добавляется в файл конфигурации веб-сервера (nginx.conf) или в его аналог для конкретного домена.
# Предотвращаем загрузку изображений за исключением файла заглушки badreferer.png
# Вместо любого запрошенного изображения вставляем заглушку badreferer.png
# Для сайтов с реферером server1 и server2 разрешаем хотлинки
location ~* ^.+\.(jpg|jpeg|gif|png)$ {
root /path/to/root;
valid_referers none blocked server_names ~\.server1\. ~\.server2\.;
if ($invalid_referer) {
rewrite ^ /badreferer.png last;
}
}
location /badreferer.png {
root /path/to/badreferer;
}
См. также
[править | править код]Примечания
[править | править код]Ссылки
[править | править код]В статье не хватает ссылок на источники (см. рекомендации по поиску). |