А что же такое hotlinking? Он используется, если я захожу загрузить какое-либо изображение напрямую с другого сайта. К примеру, в качестве изображения к этой записи я могу взять прямую ссылку на изображение логотипа Apache и вставить в запись, это и будет hotlinking. Ниже я расскажу, как устроена защита изображений от hotlinking с помощью Apache.
Для защиты изображений мы будем использовать .htaccess файл.
Отключение hotlinking изображений
Добавьте следующие правила в .htaccess файл. С помощью них вы заблокируете все запросы к изображениям, которые идут не от вашего домена. Проверка осуществляется по Referrer.
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^https?://(.+\.)?example.com [NC] RewriteRule \.(jpe?g|png|gif|bmp|tif|svg|webp)$ - [NC,F,L]
Вы также можете показывать вместо этих изображений соответствующий баннер, о неправомерности использования изображений. Сделать это можно с помощью следующих правил.
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^https?://(.+.)?example.com [NC] RewriteRule .(jpe?g|png|gif|bmp|tif|svg|webp) http://example.com/banner_block.png [R,L]
Отключение hotlinking изображений для определенных доменов
Иногда бывает нужно заблокировать hotlink только для определенных доменов, поэтому нужно изменить наше правило. В данном случае мы запрещаем hotlinking для доменов site1.example.com и site2.example.com
RewriteEngine on RewriteCond %{HTTP_REFERER} ^https?://(.+\.)?site1\.example\.com [NC,OR] RewriteCond %{HTTP_REFERER} ^https?://(.+\.)?site2\.example\.com [NC,OR] RewriteRule \.(jpe?g|png|gif|bmp|tif|svg|webp)$ - [NC,F,L]
Подробнее о файлах .htaccess вы можете найти на официальном сайте Apache: https://httpd.apache.org/docs/2.4/howto/htaccess.html