QRkoder

Защита от хотлинкинга

Защита от хотлинкинга — правило сервера или CDN не отдавать файл по прямому запросу с чужого домена: проверяют Referer или подпись.

Определение

Хотлинкинг — когда чужой сайт вставляет вашу картинку тегом img и показывает её за ваш трафик. Защита рубит такой запрос: вместо файла уходит 403 или заглушка.

Как это работает

Браузер передаёт заголовок Referer — адрес страницы, откуда пришёл запрос. Nginx сверяет его со списком своих доменов (valid_referers) и на чужой отвечает 403. Подделать Referer в curl — одна строка, поэтому надёжнее подписанные ссылки: хеш и срок годности в адресе, как в S3.

Почему фото не открывается по QR

На компьютере ссылка живая, а по коду со стикера — «доступ запрещён». Из камеры Referer уходит пустым: не разрешён вариант none — и запрос считают чужим. Или истекла подпись: ссылка живёт часы, а наклейка месяцами. Ведите код на страницу-обёртку.

Связанные концепции

Чаще всего это вылезает на облачной ссылке на файл: файлообменники режут запросы со стороны. Учитывайте HTTPS: с https на http браузер Referer не шлёт вовсе.

Частые вопросы

Почему картинка из QR-кода не открывается?

Обычно файл лежит на хостинге с защитой от хотлинкинга: из камеры браузер не передаёт Referer, и сервер считает запрос чужим. Реже истекает подпись временной ссылки. Признак: с вашей страницы файл грузится, а прямой ссылкой — нет.

Как включить защиту на своём сайте?

На Nginx — директива valid_referers со списком ваших доменов и 403 остальным. На Apache то же через .htaccess и условие по HTTP_REFERER. У CDN и хостингов это готовый переключатель в настройках зоны сайта.

Можно ли обойти защиту от хотлинкинга?

Проверку Referer — легко: заголовок подставляется вручную в curl. Подписанную ссылку без ключа не подделать, но она работает у всех, кому её переслали, пока не вышел срок. Честный путь — своя копия файла.

Не пострадают ли поиск и превью ссылок?

Пострадают, если запретить пустой Referer. Роботы Яндекса и Google, парсеры превью Telegram и VK ходят без реферера: фото выпадет из выдачи, ссылки останутся без миниатюр. Вариант none оставляйте разрешённым.

Создавайте QR-коды бесплатно

Динамические QR-коды с аналитикой, дизайном и без ограничений по сканированиям.

Начать бесплатно