Un QR code ne ressemble pas à un lien. Personne ne le survole pour voir où il mène, et le filtre de messagerie ne voit qu'une image en noir et blanc. C'est par cette faille que le quishing, le phishing par QR code, a progressé de 146 % au premier trimestre 2026 : de 7,6 millions d'attaques en janvier à 18,7 millions en mars, selon le rapport trimestriel de Microsoft sur les menaces par e-mail. C'est le vecteur qui a le plus progressé sur la période.
L'ironie, c'est que l'outil préféré des escrocs, le QR code dynamique, est aussi la meilleure défense pour qui imprime des QR codes sur des emballages, des menus, des factures ou des affiches. Voici comment fonctionne l'attaque et ce que vous pouvez faire, avec du code.
Qu'est-ce que le quishing et pourquoi passe-t-il les filtres ?
Dans le phishing classique, le lien est dans le texte. Les filtres de messagerie et les navigateurs lisent ce texte, le comparent à des listes de domaines dangereux et le bloquent. Dans le quishing, l'URL est encodée dans les modules d'une image. Beaucoup d'outils de sécurité ne décodent pas l'image, et le message passe sans alerte.
Le second effet, c'est le changement d'appareil. La personne qui reçoit l'e-mail sur son ordinateur portable pointe la caméra de son téléphone vers l'écran. L'attaque quitte un poste équipé d'un antivirus, d'un proxy d'entreprise et d'extensions de sécurité pour arriver dans un navigateur mobile, avec une barre d'adresse tronquée et l'envie d'en finir vite.
Comment les escrocs utilisent le QR code dynamique
Un QR code statique contient l'URL finale dans l'image. Un QR code dynamique contient un lien court, et le serveur décide où rediriger à chaque scan. L'escroc exploite cette séparation : au moment de l'envoi, le QR code pointe vers une page inoffensive. Si un filtre plus malin décode l'image et suit le lien, il trouve une page propre et laisse passer le message. Quelques heures plus tard, la destination est remplacée par la fausse page.
Unit 42, l'équipe de recherche de Palo Alto Networks, a documenté cette tactique : les raccourcisseurs de QR codes transforment une image statique en point de terminaison dynamique, et l'attaquant change la redirection quand il veut. Dans un des cas analysés, le code passait par un CAPTCHA avant d'aboutir sur une fausse page Outlook. L'analyse au moment de la livraison ne suffit pas, car la destination de demain n'existe pas encore.
Pour l'utilisateur final, la règle pratique est simple : si un horodateur, un transporteur ou une banque vous demande d'agir via un QR code, ignorez le code et ouvrez l'application officielle que vous avez déjà, ou tapez l'adresse vous-même. Pour qui publie des QR codes, la leçon est autre : vos clients seront de plus en plus méfiants, et le QR code doit leur donner une raison de faire confiance.

Le risque pour ceux qui impriment des QR codes
Si votre entreprise met des QR codes sur des produits ou des supports imprimés, le problème n'est pas seulement qu'un client tombe dans une arnaque. C'est qu'il tombe dans une arnaque qui semblait venir de vous. Trois scénarios reviennent souvent :
- Autocollant par-dessus : quelqu'un colle un faux QR code sur le vôtre, sur une table, une borne ou un horodateur. Visuellement, rien ne change.
- Destination périmée : le domaine de la campagne a expiré, un tiers l'a racheté, et le QR code imprimé sur mille emballages mène désormais ailleurs.
- QR code statique avec une erreur : l'URL comportait un problème ou la page a disparu, et impossible de corriger sans réimprimer.
Les trois ont la même cause : le QR code imprimé échappe à votre contrôle dès qu'il quitte l'imprimerie. Le QR code dynamique vous rend ce contrôle.
Défense 1 : vérifier l'URL avant de publier
La première étape coûte peu : avant qu'une URL devienne un QR code, demandez si elle est sûre. Cela vaut pour les liens saisis par votre équipe et surtout pour ceux qui viennent d'utilisateurs, de partenaires ou d'intégrations. L'API de Vérification d'URL répond en un seul appel :
curl -sS 'https://api.respawntech.dev/v1/tools/safety/check?url=https://loja.example.com/promo' \
-H "X-API-Token: $RESPAWN_API_TOKEN"
# { "is_safe": true }async function isSafe(url) {
const res = await fetch(
`https://api.respawntech.dev/v1/tools/safety/check?url=${encodeURIComponent(url)}`,
{ headers: { "X-API-Token": process.env.RESPAWN_API_TOKEN } }
);
const { is_safe } = await res.json();
return is_safe;
}
if (!(await isSafe(targetUrl))) {
throw new Error("Destino bloqueado: URL marcada como insegura");
}Dans le QR Code Dynamique, cette vérification est intégrée : les URL malveillantes sont refusées à la création avec l'erreur dynamic_qr.malicious_url, et une destination qui devient dangereuse par la suite envoie le visiteur vers la page de QR code indisponible avec reason=safety_risk au lieu de le rediriger.
Défense 2 : changer la destination sans réimprimer
Vous découvrez que la page de destination a été compromise, ou que la campagne est terminée ? Avec un QR code dynamique, l'image imprimée reste la même et seule la destination change. C'est un PATCH, et modifier la destination ne coûte aucun crédit :
curl -sS -X PATCH "https://api.respawntech.dev/v1/tools/image/qr-code/dynamic/$QR_ID" \
-H "X-API-Token: $RESPAWN_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "target_url": "https://loja.example.com/aviso-de-seguranca" }'await fetch(`https://api.respawntech.dev/v1/tools/image/qr-code/dynamic/${qrId}`, {
method: "PATCH",
headers: {
"X-API-Token": process.env.RESPAWN_API_TOKEN,
"Content-Type": "application/json",
},
body: JSON.stringify({ target_url: "https://loja.example.com/aviso-de-seguranca" }),
});En cas d'incident, mieux vaut pointer vers une page d'avertissement que désactiver le QR code. La personne qui scanne comprend ce qui s'est passé au lieu de croire que le code est cassé.
Défense 3 : des contrôles qui limitent les dégâts
Tous les QR codes n'ont pas besoin de fonctionner éternellement, ni pour n'importe qui. Plus la fenêtre d'utilisation est courte, moins le code a de valeur pour qui veut en abuser. Les champs ci-dessous s'utilisent à la création comme dans un PATCH :
| Champ | Ce qu'il fait | Quand l'utiliser |
|---|---|---|
| expires_at | Désactive le QR code à une date | Promotions, événements, billets |
| scan_limit | Le désactive après N scans | Coupons à usage limité, cadeaux |
| password | Exige un mot de passe avant la redirection | Documents internes, contenus restreints |
| expired_url / limit_reached_url | Renvoie vers votre propre page quand le QR code expire ou est épuisé | Éviter une impasse après la fin de la campagne |
| custom_domain_id | Utilise votre domaine dans le lien court | Renforcer la marque et apprendre au client à reconnaître votre adresse |
Le domaine personnalisé mérite qu'on s'y arrête. Quand tous les QR codes de votre entreprise s'ouvrent sur qr.votreentreprise.com, il est facile d'orienter le client : si l'adresse est différente, méfiance. C'est la même logique que d'apprendre à vérifier le cadenas du navigateur, appliquée au scan.
Checklist pour les équipes qui utilisent des QR codes
- Vérifiez chaque URL avant qu'elle devienne un QR code, y compris celles des partenaires et des utilisateurs.
- Préférez le QR code dynamique pour tout support imprimé qui dure plus d'une semaine.
- Utilisez votre propre domaine dans le lien court et faites-le savoir à vos clients.
- Définissez une expiration ou une limite de scans pour les campagnes à durée limitée.
- Suivez les scans : un pic à une heure inhabituelle ou depuis une région inattendue peut signaler un QR code copié.
- Ne menez jamais un client directement d'un scan vers une connexion ou un paiement sans contexte. Si c'est inévitable, rendez le domaine évident.
- Inspectez physiquement les QR codes dans les lieux publics : l'autocollant superposé est l'arnaque la moins chère qui soit.
Questions fréquentes
Un QR code peut-il contenir un virus ?
Le QR code lui-même n'est que du texte encodé, généralement une URL. Le danger, c'est la destination : une page qui imite une connexion, demande des données de carte ou télécharge une application malveillante.
Comment savoir si un QR code est sûr ?
Avant de l'ouvrir, vérifiez l'adresse affichée par la caméra. Méfiez-vous des domaines inconnus, des raccourcisseurs génériques et des pages qui demandent un mot de passe ou un paiement d'emblée. Dans vos systèmes, vérifiez l'URL par API avant de l'afficher ou de rediriger.
Le QR code dynamique est-il plus dangereux que le statique ?
Tout dépend de qui le contrôle. Entre les mains d'un escroc, la destination modifiable aide à tromper les filtres. Entre les mains de l'entreprise qui l'imprime, c'est ce qui permet de corriger une destination compromise sans rappeler les supports.
Que faire si un QR code de mon entreprise est falsifié ?
S'il est dynamique, pointez immédiatement la destination vers une page d'avertissement et enquêtez. S'il est statique, retirez le support et remplacez-le par un QR code dynamique sur votre propre domaine.
Commencez par les QR codes déjà en circulation
Le quishing progresse parce qu'il exploite l'endroit que personne ne regarde. Pour qui imprime des QR codes, la défense consiste à traiter chaque code comme un lien que vous devez continuer à contrôler après l'imprimerie : vérifier la destination, pouvoir la changer et limiter la fenêtre d'utilisation.
Le QR Code Dynamique refuse déjà les destinations malveillantes et permet de changer le lien sans réimprimer. La Vérification d'URL apporte le même contrôle au reste de votre système. Le détail de chaque champ se trouve dans la documentation.
À propos de l'auteur
Rychard
Équipe Respawn Tech Dev
Ceux qui construisent et maintiennent les API de Respawn Tech Dev.