Захист сайту від хотлінкінга (hotlinking)
Вітаю Вас, гості та передплатники блогу 4remind.ru. А чи знаєте Ви, що таке Хотлінкінг (Hotlinking) і який шкода чи користь від нього може бути для вашого веб-сайту? Якщо Ви не в курсі цього, то пропоную Вам коротко ознайомитися з поняттям «хотлінкінга» і методами захисту від нього.

Отже, під поняттям Хотлінкінг (Hotlinking) як правило мається на увазі включення на веб-сторінки стороннього ресурсу файлів зображень, які знаходяться на вашому сайті. Як думаєте, це добре чи погано?
Це добре в тих випадках, коли Ви самі хочете, щоб наприклад при відкритті сторінок сторонніх веб-ресурсів відвідувач міг бачити якісь фото, картинки, які завантажуються з вашого сайту, або, наприклад, Ви утримуєте веб-сервер як загальнодоступне сховище зображень , при цьому вільно дозволяючи Хотлінкінг. Однак в таких випадках варто брати до уваги те, що при великій кількості ваших зображень і активному використанні хотлінкінга, навантаження на ваш сервер (це особливо стосується трафіку) може виявитися вже дуже величезною, що може призвести або до дуже повільного відкриття сторінок вашого сайту, або взагалі до його недоступності.
Для більшості ж персональних сайтів, блогів з великою кількістю зображень і щодо «бюджетним» хостингом або тарифним планом допускати використання хотлінкінга неприйнятне. Виходячи з цього пропоную вам пару перевірених і багатьма використовуваних способів захисту.
Отже, ось приклад захисту сайту від хотлінкінга за допомогою .htaccess і mod_rewrite (модуля сервера Apache):
У наведеному прикладі Вам потрібно замінити «vashsait \ .org» на доменне ім'я свого сайту. Захист від хотлінкінга діятиме щодо файлів зображень з розширеннями jpeg, jpg, gif, bmp, png.
При необхідності Ви звичайно ж можете додати (або прибрати) інші розширення, і не тільки для зображень, підставивши їх в рядок №4, розділяючи зазначені там розширення символом вертикальної риски «|».
Однак, у зв'язку з тим, що при використанні вище наведеного прикладу, при спробі хотлінкінга буде видаватися помилка 403 (403 Forbidden - доступ заборонений), то краще застосовувати трохи інший підхід, точніше трохи змінену логіку, а саме, замість «403-го» відповіді дозволити показувати зображення-заглушку, якою може служити або конкретний графічний файл мінімального розміру, наприклад 1х1 пікселів, або файл-зображення, яке буде говорити про те, що була спроба без дозволу «відвести» картинку. Ось приклад, в якому застосовується використання файлу-заглушки «zaglushka.gif»:
Ось ще приклад, де реалізовано блокування використання хотлінкінга тільки для двох конкретних серверів: livejournal.com і blogspot.com:
Якщо ж на вашому хостингу використовується веб-сервер Nginx і до його конфігурації (файл nginx.conf) у Вас є доступ, то можна скористатися наступним спеціальним скриптом, який буде блокувати всі хотлінк:
Підказка:
в прикладі замість подстрок «/ your / path / to /» Вам потрібно буде вказувати конкретний шлях, який використовується безпосередньо на вашому ресурсі.
Якщо ж Ви захочете дозволити хотлінкінг (hotlinking) для деяких сторонніх сайтів, то можна трохи змінити наведений вище код та додати перевірку дозволених сайтів по параметру «реферер», і для веб-сервера Nginx це буде виглядати так:
Таким чином за допомогою цього скрипта, доданого в файл nginx.conf. буде дозволений хотлінкінг тільки для сайтів з реферером site1, site2 і site3.
Підказка:
- Дозволені «Реферер» перераховуються в рядку:
valid_referers none blocked server_names.
- Перевірка «реферера» на предмет попадання його в список дозволених здійснюється в умови:
if ($ invalid_referer)
Ось мабуть і все основні премудрості захисту від Хотлінкінга.
Удачі Вам у боротьбі з небажаними елементами!
Інші статті схожою тематики: