QR-код: сначала расшифруйте, не сканируйте
QR-код невозможно прочитать глазами, но его содержимое можно извлечь за несколько секунд. Узнайте адрес до перехода — и ограничения такой проверки.
Это нужно в двух ситуациях: когда вы собираетесь просканировать код, которому не вполне доверяете, и когда собираетесь напечатать код, созданный где-то ещё. Один и тот же способ подходит для обоих случаев.
Шаг 1 — прочитайте содержимое вместо перехода по ссылке
QR-код хранит текст. Сканер расшифровывает этот текст и сразу выполняет его — открывает URL, подключается к сети Wi-Fi, начинает звонок. Декодер расшифровывает тот же текст и просто показывает его вам. В этом и заключается весь запас безопасности.
Сфотографируйте код или сделайте снимок экрана, а затем расшифруйте изображение с помощью нашего QR-ридера. Он полностью работает в браузере: изображение никуда не загружается, и ничего не открывается. Вы получаете исходное содержимое в виде текста.
Шаг 2 — определите тип содержимого
Содержимое QR-кодов обычно имеет узнаваемый формат. По началу строки можно понять, что сделал бы сканер.
| Содержимое начинается с | Тип | Что сделал бы сканер |
|---|---|---|
https:// или http:// | URL | Открыл бы страницу. Это самый распространённый случай |
WIFI:T:WPA;S:…;P:…;; | Учётные данные Wi-Fi | Предложил бы подключиться к этой сети — проверьте SSID перед подтверждением |
BEGIN:VCARD | Контактная карточка | Предложил бы сохранить контакт |
mailto: / tel: / smsto: | Электронная почта, звонок, SMS | Подставил бы данные сообщения или набрал номер |
| Обычный текст без префикса | Текст | Показал бы его. Безвредно |
javascript: или незнакомая схема приложения | Подозрительное | Не открывайте |
На наших страницах о типах описан каждый формат, если вы хотите увидеть, как выглядит корректный код: Wi-Fi, vCard, электронная почта, телефон, обычный текст.
Шаг 3 — проверьте домен
Для URL главное — домен. Читайте его справа налево до первой одиночной косой черты. В https://pay.cityparking.gov/meter/44 домен — cityparking.gov. В https://cityparking.gov.pay-now.click/meter/44 это pay-now.click, а узнаваемая часть — лишь декорация.
| Что вы видите | Как это понимать |
|---|---|
| Узнаваемый домен, соответствующий организации | Прямая ссылка. Код ведёт туда, куда кажется |
| Обычный сервис сокращения QR-ссылок, которым владеете не вы | В цепочке есть третья сторона, которая может изменить или отключить адрес назначения |
| Настоящее название бренда как поддомен чего-то другого | Классическая подмена. Проверяйте метки справа |
| Необработанный IP-адрес | На печатных материалах это почти никогда не бывает законным |
О сокращателях стоит помнить следующее: если вы узнаёте сервис, это не говорит, куда ведёт ссылка. Unit 42 формулирует это прямо: «Даже люди, внимательно относящиеся к безопасности и проверяющие предварительный просмотр URL перед сканированием, не могут определить конечный адрес, если им показывают сокращённые ссылки». Три сервиса, которые они называют наиболее часто злоупотребляемыми, — обычные домены перенаправления QR-генераторов. Знакомый сокращатель не служит гарантией.
Шаг 4 — проследите цепочку перенаправлений
Если содержимое — короткая ссылка и вам нужно узнать её настоящий конечный адрес, определите его, не загружая страницу. В терминале:
Выполните curl -sIL "https://short.example/abc" | grep -i "^location:" — команда выведет заголовок Location для каждого перехода, не выполняя содержимое страницы. Обратите внимание на число переходов: один переход к ожидаемому адресу — обычная ситуация, а несколько переходов через несвязанные хосты обычно указывают на посредников аналитики или рекламы, каждый из которых видит запрос. В статье Что записывает QR-прокси описано, какие данные собирают такие переходы.
Есть два важных ограничения. Перенаправление может отправить вас и другого человека на разные страницы в зависимости от IP-адреса, user-agent или времени. Поэтому чистый результат подтверждает только то, что произошло с вами в тот момент, а не то, что получит клиент в другой стране. Кроме того, адрес назначения динамического кода можно изменить в любой момент — именно ради этой функции его и продают.
Как проверить код, который пришёл по электронной почте?
Считайте это отдельным и более опасным случаем. NCSC отмечает, что QR-коды используют в фишинговых письмах именно потому, что не все средства защиты проверяют изображения. Поэтому код может пронести вредоносную ссылку мимо фильтров, которые обнаружили бы ту же ссылку в виде текста, а сканирование переводит вас на личный телефон с более слабой защитой, чем у рабочего компьютера.
Проверка проста. Сохраните изображение из письма, а не сканируйте его с экрана, расшифруйте файл и прочитайте домен. Делайте это на компьютере, а не на телефоне, чтобы не покидать защищённое устройство. Если домен не полностью совпадает с организацией, от имени которой якобы отправлено письмо, остановитесь и свяжитесь с организацией привычным способом, а не через что-либо из сообщения.
Обращайте внимание на сочетание срочности и кода: проблема с доставкой, уведомление от налоговой, переполненный почтовый ящик, необходимость подтвердить аккаунт сегодня. Законным организациям очень редко нужно, чтобы вы сканировали напечатанный квадрат для решения срочной проблемы с аккаунтом. В статье Квишинг подробно разобраны схемы таких атак.
Чего декодер не может вам сказать?
Если понимать ограничения, проверка будет честной и полезной.
- Безопасен ли адрес назначения. Декодер показывает адрес, а не содержимое. Даже узнаваемый домен может размещать взломанную страницу.
- Что увидят другие люди. Перенаправление может вести на разные адреса в зависимости от IP-адреса, user-agent или времени суток. Чистый результат описывает только ваш запрос в конкретный момент.
- Что произойдёт завтра. Адрес назначения динамического кода можно изменить в любой момент после проверки. Именно ради этого его и продают, поэтому фраза «я однажды его проверил» не является постоянным подтверждением безопасности динамического кода.
- Совпадает ли напечатанная копия с файлом. Наклеенная поверх стикерная накладка означает, что утверждённый вами макет и объект на стене могут отличаться. Только расшифровка физической копии говорит что-либо о физической копии.
Именно первое и последнее ограничения объясняют, почему в советах для бизнеса этого блога постоянно повторяется одна мысль: статический код на собственном домене — единственный вариант, при котором разовая проверка остаётся верной.
Шаг 5 — проверьте собственный макет перед печатью
Это занимает минуту и предотвращает целый класс дорогостоящих проблем.
- Экспортируйте финальный макет ровно в том виде, в котором он будет напечатан.
- Расшифруйте этот файл, а не код в окне предварительного просмотра генератора.
- Убедитесь, что содержимое — нужный вам URL на принадлежащем вам домене.
- Если это короткая ссылка на чужом домене, не печатайте её. Создайте статический код заново.
- После получения печатной пробы просканируйте её и убедитесь, что она по-прежнему ведёт куда нужно.
Если код уже напечатан и проверять его стало поздно, руководство по восстановлению после блокировки описывает оставшиеся варианты. Если код перестал работать и вы пока не знаете почему, начните со статьи почему ваш QR-код перестал работать.
Часто задаваемые вопросы
- Можно ли расшифровать повреждённый, грязный или частично закрытый QR-код?
- Часто да. В QR-кодах используется коррекция ошибок Рида — Соломона, и на самом высоком уровне можно потерять примерно 30% узора, сохранив содержимое. Нельзя потерять три больших квадрата в углах — это маркеры положения, по которым декодер вообще находит и ориентирует сетку. Код с оторванным углом обычно не сработает, а потёртый посередине — обычно сработает.
- Безопасно ли сканировать QR-код просто чтобы посмотреть, что в нём?
- Большинство телефонных сканеров показывают предварительный просмотр перед открытием, и это относительно безопасно. Риск возникает, когда вы по привычке сразу нажимаете на ссылку. Если есть сомнения, расшифруйте изображение — это полностью устраняет риск.
- Как понять, что QR-код динамический?
- Расшифруйте его. Если содержимое — короткая ссылка на домене, который не принадлежит ни вам, ни сайту назначения, код динамический и проходит через эту третью сторону. Статический код содержит сам URL назначения.
- Можно ли понять, что делает QR-код, до сканирования, если у меня нет интернета?
- Да. Расшифровка — локальная операция: декодеру, работающему в браузере, не нужна сеть после загрузки страницы, а содержимое представляет собой текст, который вы можете прочитать сами.
- Что делать, если напечатанный код расшифровывается в незнакомый мне домен?
- Не сканируйте его. Если он размещён на объекте общего пользования, сообщите об этом владельцу поверхности. FTC и FBI предупреждали о стикерах, наклеенных поверх настоящих кодов; см. квишинг.
Коды, созданные здесь, всегда расшифровываются ровно в то, что вы ввели: QR-код для URL. Больше контекста — в статье правда о мошенничестве с QR-кодами.
Готовы к статичному QR-коду?
Создайте его прямо в браузере — без аккаунта, без отслеживания, без подписки. Что вы сгенерируете — принадлежит вам.
Связанные статьи
Квишинг: главные домены атак — QR-генераторы
Слой перенаправления, который «бесплатные» QR-генераторы добавляют в обычную печатную продукцию, используют и злоумышленники — он лишил сканеры последней защиты.
Статичные и динамические QR-коды: что важно знать каждому
Один кодирует ваш контент; другой кодирует редирект. Эта единственная разница определяет, будет ли ваш QR-код работать через пять лет.
QR-код отключили: покупайте месяц, не год
План действий для отключённого кода: кто им управляет, сколько стоит выход и какой шаг не даст проблеме повториться.
5 красных флагов, что ваш генератор QR — ловушка
Пять сигналов, отличающих честные инструменты QR от динамик-первых генераторов, которые потом начнут брать с вас деньги или отключат ваши коды.
QR-сканы: данные у сервиса, риск — у вас
Аналитика сканирований — не бонусная функция. Именно ради неё существует переадресация, а юридический риск несёт не тот, у кого находятся данные.