Проблема хотлинкинга
- Увеличенная нагрузка на сервер владельца оригинального ресурса.
- Нарушение авторских прав и интеллектуальной собственности.
- Потеря контроля над контентом, включая качество и внешний вид изображений.
Способы борьбы с хотлинком
Использование заголовка Referer
Самый распространённый метод заключается в проверке заголовка Referer, отправляемого браузером. Если запрос поступает с другого домена, сервер отклоняет этот запрос.
Пример конфигурации для Nginx:
location ~* \.(jpg|jpeg|gif|png|bmp|ico|webp)$ {
valid_referers none blocked server_names ~\.google\. ~\.yandex\.;
if ($invalid_referer) {
return 403;
}
}Белый список доменов
Можно ограничить доступ к изображениям только определённым доменам, включенным в белый список.
Пример конфигурации для Nginx:
location ~* \.(jpg|jpeg|gif|png|bmp|ico|webp)$ {
set $allow_access 0;
if ($http_referer ~ "^https?://(www\.)?example\.com") { set $allow_access 1; }
if ($allow_access != 1) { return 403; }
}Подмена изображения
При попытке хотлинкинга можно показывать другое изображение, например, логотип сайта или предупреждение.
Пример конфигурации для Nginx:
location ~* \.(jpg|jpeg|gif|png|bmp|ico|webp)$ {
valid_referers none blocked server_names ~\.google\. ~\.yandex\.;
if ($invalid_referer) {
rewrite ^ /images/no-hotlink.png break;
}
}Ограничение доступа с помощью подписей
Каждый ресурс может сопровождаться уникальным ключом или подписью, проверка которого осуществляется на стороне сервера перед выдачей файла.
Хранение изображений на защищённых серверах
Например, используя Amazon CloudFront или аналогичные сервисы, можно включить механизмы аутентификации и шифрования, предотвращающие нежелательные обращения.
Выбери подходящий метод исходя из потребностей и инфраструктуры твоего проекта.