Хотлинк (Hotlinking), часто называемый кражей полосы пропускания, происходит, когда другие веб-сайты напрямую ссылаются на изображения или другие медиафайлы, размещенные на вашем сервере. Это может привести к увеличению нагрузки на сервер и увеличению пропускной способности, что может замедлить работу вашего сайта и повлечь за собой увеличение расходов на хостинг.
Apache, широко распространенный веб-сервер, предлагает методы предотвращения "горячих ссылок". Используя модуль mod_rewrite, вы можете ограничить доступ к вашим медиафайлам, гарантируя, что они будут доступны только из вашего домена. Эта защита может быть реализована с помощью директивы Directory в конфигурационном файле Apache или файла .htaccess.
Предотвращение "горячих ссылок" не только защищает ваши ресурсы, но и обеспечивает корректное отображение контента на вашем сайте. Это важный шаг для оптимизации работы веб-сервера и сохранения контроля над медиа.
Шаги по предотвращению Хотлинков (Hotlinking) в Apache
Включите модуль перезаписи для Apache.
1 2 | sudo a2enmod rewrite sudo systemctl restart apache2 |
- В дистрибутивах с поддержкой a2enmod можно выполнить приведенную выше команду без ручного включения модулей.
- В CentOS и Red Hat модуль включен по умолчанию, поэтому никаких действий вручную не требуется.
Найдите каталог, в котором находятся ваши медиафайлы.
Отредактируйте файл конфигурации Apache или создайте файл .htaccess в директории, которую нужно защитить.
1 | sudo nano /etc/apache2/apache2.conf |
Вставьте правило перезаписи, чтобы ограничить доступ к изображениям и другим медиафайлам.
1 2 3 4 5 6 7 | <Directory "/var/www/html/images"> RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?anotheralloweddomain.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L] </Directory> |
- RewriteEngine on Включает механизм перезаписи.
- RewriteCond %{HTTP_REFERER} !^$ Проверяет, не является ли реферер пустым.
- RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC] Проверяет, что реферер не из вашего домена, с www или без, и либо http, либо https.
- RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?anotheralloweddomain.com [NC] Проверяет, не является ли реферер из другого разрешенного домена, с www или без, и либо http, либо https.
- RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L] Блокирует доступ к файлам JPG, JPEG, PNG и GIF, если выполняются вышеуказанные условия. Используются следующие флаги: NC (No Case - без учета регистра), F (Forbidden - отправляет клиенту код состояния 403 Forbidden) и L (Last - прекращает обработку последующих правил, если выполнено это).
Сохраните и выйдите из текстового редактора.
Перезапустите службу Apache, чтобы внести изменения.
1 | sudo systemctl restart apache2 |
Проверьте конфигурацию, попробовав получить доступ к изображению из другого домена.
Убедитесь, что вы очистили кэш браузера или используете другой браузер для точной проверки конфигурации.