·Чтение: 6 мин

Перехват через редирект в QR-коде: невидимый посредник

Когда ваш QR работает, посредник невидим. Когда сломается — уже поздно. Понимание модели редиректа — первый шаг, чтобы её избежать.


В любом динамическом QR-коде, который вы когда-либо сканировали, участвовала третья сторона, которую вы не выбирали. Между камерой телефона и целевым сайтом сервер-редирект, принадлежащий провайдеру QR, тихо пересылал запрос. Большинство пользователей этого не замечают. В этом и смысл.

Эта статья объясняет, как перехват через редирект выглядит на практике, что именно делает посредник и что поставлено на карту.

Последовательность редиректа

При сканировании статичного QR для https://shop.example.com:

  1. Камера читает QR-код
  2. ОС распознаёт его как URL
  3. Браузер открывает https://shop.example.com

Три шага. Никаких третьих сторон.

При сканировании динамического QR на тот же адрес:

  1. Камера читает QR-код, который кодирует что-то вроде https://qr-provider.com/r/x7n2
  2. ОС открывает этот URL
  3. qr-provider.com получает запрос, логирует его, ищет x7n2 в базе данных
  4. qr-provider.com отдаёт 301 или 302 редирект на https://shop.example.com
  5. Браузер идёт по редиректу и попадает на настоящий адрес

Пять шагов. Лишняя сторона на шаге 3 — та, с которой вы не соглашались, которой не платили и которую не видите.

Что получает посредник

Каждое сканирование создаёт запись в логе сервера, содержащую:

  • Временную метку сканирования
  • IP-адрес сканирующего
  • Строку user-agent (устройство, ОС, браузер)
  • Заголовок referrer (откуда пришёл сканирующий, если применимо)
  • Заголовок Accept-Language (язык устройства)

Из этого провайдер выводит: примерную геолокацию, тип устройства, версию ОС и — в агрегате — паттерны сканирования во времени. Клиентам это продаётся как «аналитика». Но ровно так же это — слежка за людьми, сканирующими ваши коды, которые никогда на это не соглашались.

Что может делать посредник

Менять адрес назначения

Адрес назначения живёт в базе данных провайдера. Владелец QR обычно может редактировать его через дашборд. Это продаётся как фича, и для некоторых сценариев это действительно она. Но это значит, что QR-код — больше не то, чем кажется. Физический артефакт говорит «отсканируйте, чтобы зайти на наш сайт». Реальное поведение — то, что сейчас лежит в базе провайдера.

Отключать редирект

Если подписка владельца истекла, аккаунт закрыт или правила провайдера нарушены — редирект можно снять. Все напечатанные копии QR-кода мгновенно перестают работать. Сканирующие видят либо страницу общей ошибки, либо 404.

Вставлять промежуточную страницу

Некоторые провайдеры пропускают сканирования динамических QR через брендированную промежуточную страницу до финального редиректа — показывают рекламу, требуют согласия, собирают email. Владелец QR обычно на это не подписывался. Это добавляется потом, когда провайдер начинает монетизироваться жёстче.

Продавать или терять данные о сканированиях

Логи сканирований — ценность. Их продавали аналитическим брокерам, использовали для обучения рекламных моделей и — по крайней мере в нескольких задокументированных утечках — теряли при взломах. Ваши клиенты отсканировали меню; теперь их device fingerprint лежит в дампе утечки.

Почему пользователи не замечают

Современные браузеры следуют за редиректами автоматически. Если не открыть инструменты разработчика, промежуточный хоп не виден. Сканирование ощущается мгновенным, потому что редирект быстр (когда работает). С точки зрения пользователя динамический QR ведёт себя идентично статичному.

Ровно до того момента, как сервер-редирект упадёт. Тогда опыт расходится резко — но к этому времени QR-код уже напечатан на тысяче поверхностей.

Последствия для безопасности

Сервер-редирект — это единая точка отказа для каждого QR, зависящего от него. Три поверхности атаки, которые стоит учитывать:

  • Захват аккаунта. Если злоумышленник получит доступ к аккаунту владельца у провайдера, он сможет перенаправить каждый QR на фишинговую страницу. Клиенты сканируют физический код, ожидая меню ресторана; попадают на клон страницы входа, собирающий логины.
  • Компрометация провайдера. Если взломают самого провайдера QR, все динамические коды в обороте потенциально перенаправляются на контент, контролируемый атакующим. Это не теоретически — задокументированные утечки известны у нескольких QR-as-a-service провайдеров.
  • Сбой DNS или TLS у провайдера. Если домен-редирект перестаёт резолвиться или TLS-сертификат истёк, любой QR, зависящий от него, отказывает. Без злого умысла — обычный операционный риск, которым владелец QR не управляет.

У статичных QR-кодов нет ни одного из этих режимов отказа, потому что между сканированием и назначением нет стороннего сервера.

Как проверить, не сканируете ли вы редирект

Используйте сканер, который показывает декодированный контент до перехода — наш веб-сканер так и делает. Отсканируйте QR-код и посмотрите декодированный URL. Если это ваш реальный адрес — QR статичный. Если это что-то вроде qrco.de/xyz или короткий домен, которого вы не знаете — это редирект, и посредине сидит третья сторона.

Альтернатива

Генерируйте QR-коды, которые кодируют адрес назначения напрямую. Никаких сторонних серверов, никаких логов редиректов, никаких подписок. Полное сравнение — в Статичные и динамические QR-коды, а почему модель-посредник доминирует в индустрии — в Правде о мошенничестве с QR-кодами.

Или просто сгенерируйте статичный QR-код и перестаньте волноваться.


Готовы к статичному QR-коду?

Создайте его прямо в браузере — без аккаунта, без отслеживания, без подписки. Что вы сгенерируете — принадлежит вам.

Правда о мошенничестве с QR-кодами: как «бесплатные» генераторы выманивают деньги

Динамические QR-коды позволяют провайдерам отслеживать, редактировать, отключать и монетизировать ваши коды после того, как вы их напечатали. Вот как работает эта схема и как её избежать.

Статичные и динамические QR-коды: что важно знать каждому

Один кодирует ваш контент; другой кодирует редирект. Эта единственная разница определяет, будет ли ваш QR-код работать через пять лет.

Ловушка подписки для QR: как провайдеры держат ваши ссылки в заложниках

Приманка — бесплатный QR-код. Крючок — что он работает, только пока вы платите. Ловушка захлопывается в день, когда вы напечатали десять тысяч копий.

5 красных флагов, что ваш генератор QR — ловушка

Пять сигналов, отличающих честные инструменты QR от динамик-первых генераторов, которые потом начнут брать с вас деньги или отключат ваши коды.