In het kort
Een QR-code is geen plaatje met een link erin, maar een gecodeerde tekst die je pas leest op het moment dat je al scant. Uit Ipsos I&O-onderzoek in opdracht van ABN AMRO blijkt dat 72% van de Nederlanders de betrouwbaarheid van een QR-code niet kan beoordelen. Hieronder staat hoe de techniek werkt, welke varianten je in Nederland tegenkomt en hoe je een code in twintig seconden checkt.
Wat quishing is
Quishing is phishing waarbij de link in een vierkantje zit in plaats van in de tekst. De rest van het draaiboek is identiek: je belandt op een nagemaakte pagina, vult je gegevens in, of doet een betaling die je nooit van plan was.
Waarom het werkt, heeft weinig met techniek te maken:
- Filters kijken niet naar plaatjes. Een QR-code in een PDF of afbeelding komt door de spamfilter heen.
- Je telefoon is de zwakste schakel. Geen beveiligingssoftware die meekijkt, geen browserextensie die waarschuwt, wel al je accounts.
- De plek leent vertrouwen. Een code op een parkeerautomaat voelt anders dan een link uit het buitenland.
- Het doorbreekt een gewoonte. Je bent getraind niet te klikken. Scannen voelt als iets anders.
De vraag is nooit of de code echt is, maar waar je uitkomt. Zie ook phishing herkennen: 7 signalen.
Hoe een QR-code technisch in elkaar zit
Een QR-code (Quick Response) is in 1994 bedacht door Denso Wave voor onderdelen in een autofabriek. Het formaat staat in ISO/IEC 18004 en is nooit gepatenteerd, waardoor het overal opdook: op pakketten, menukaarten en boardingpassen.
Vierkantjes die tekst zijn
Een code is een raster van 21 bij 21 modules voor de kleinste versie tot 177 bij 177 voor de grootste. Drie vierkanten in de hoeken vertellen de scanner waar het raster begint; de rest is data plus foutcorrectie volgens Reed-Solomon. Op het hoogste niveau mag ongeveer 30% van de code bedekt zijn en wordt hij nog gelezen — daarom werkt een sticker over een bestaande code. En omdat er ruim 4.000 tekens in passen, verdwijnt een URL van honderd tekens in twee bij twee centimeter. Er is geen visuele verhouding tussen wat je ziet en waar je heen gaat.
Wat er in een code kan zitten
Een scanner leest geen link. Hij leest een tekst en beslist daarna wat hij daarmee doet.
| Inhoud | Wat je telefoon doet |
|---|---|
| Webadres | opent de browser |
| Betaalverzoek (SEPA) | opent de bankapp met ingevulde opdracht |
| Wifi-instelling | stelt voor om te verbinden |
| App-deeplink | opent de app direct |
| Contactkaart | biedt aan op te slaan |
Dezelfde vierkantjes die een wifi-netwerk instellen, kunnen dus een betaalopdracht klaarzetten.
Waarom je vooraf niet kunt zien wat erin zit
Er is geen leesbare tekst en geen kleur die iets verraadt: de data is binair gecodeerd en gemaskeerd. Je hebt een decoder nodig — camera, scanner-app, bankapp — en die beslist ook wat er met de uitkomst gebeurt.
Waarom je telefoon je in de val laat lopen
De techniek is neutraal. De interface is dat niet.
Geen adresbalk, geen hover
Op een laptop hang je boven een link en zie je onderin waar hij heen gaat. Bij een QR-code komt die informatie pas nadat je hebt besloten. Je camera toont wel íets — iOS een knopje met het domein, Android een chip — maar dat is elf punts tekst onderin beeld terwijl jij naar het midden kijkt.
De camera opent meteen door
Eén tik en je zit er al: de camera wisselt naar de browser, de pagina bouwt op, je leest al voordat je nadacht. Bij een link in een mail is er vaak nog een rem — de client vraagt of je wilt openen.
Ingekort, verborgen of omgeleid
Redirects: de URL in de code is niet de pagina die je krijgt. Verkorte links: bit.ly zegt niets over de bestemming. QR-diensten met eigen domein: gratis generatoren zetten hun eigen redirect in de code om scans te tellen. Niet kwaadwillend, maar het leert je dat een vreemd domein normaal is — precies de gewoonte die een aanvaller nodig heeft.
Klein scherm, geen adresbalk in de app
Een adresbalk op een telefoon is kort: je ziet het subdomein wel, het echte domein niet. Open je de link vanuit Instagram, WhatsApp of een mailapp, dan opent vaak een ingebouwde browser zonder adresbalk — je kunt niet controleren waar je bent. En je telefoon is meestal ook je tweede factor: je inlogcodes, pushmeldingen en mail staan op het toestel waarmee je inlogt.
De varianten die je in Nederland tegenkomt
De Fraudehelpdesk, de politie en de banken krijgen er meldingen over. De varianten zijn voorspelbaar genoeg om ze uit elkaar te houden.
| Variant | Hoe je hem tegenkomt | Waar je op let |
|---|---|---|
| Parkeren | flyer onder de ruitenwisser, sticker op de automaat | een naheffing komt als beschikking per post |
| CJIB en Belastingdienst | brief of e-mail met “betaal binnen 48 uur” | boetes en aanslagen lopen via Mijn CJIB of Mijn Belastingdienst met DigiD |
| Pakketbezorging | kaartje in de bus, mail met “herbezorgkosten” | je betaalt nooit vooraf voor een herbezorging |
| Horeca | sticker op tafel, QR in de menukaart | de app moet het restaurant zelf noemen |
| Overplakken | sticker over een echte code op automaat of laadpaal | losse rand, dikte, scheef geplakt, andere printkwaliteit |
| Werk en WhatsApp | “solliciteer via deze code”, verificatieverzoek | niemand hoeft een QR te scannen om jouw account te verifiëren |
| Betalen | betaalverzoek in plaats van link | je bankapp opent met bedrag en IBAN al ingevuld |
Parkeren en post
De parkeervariant heeft de hoogste slagingskans: haast en schaamte komen samen. Twee dingen kloppen nooit. Een naheffing parkeerbelasting is een beschikking — per post, met bezwaartermijn, betaald via de gemeente of het CJIB, niet via een knop op een flyer. En een echte automaat heeft zijn code achter glas. Ook nepversies van parkeerapps in de appwinkel zijn een aanvalspunt.
Bij brieven namens het CJIB of de Belastingdienst vervangt de code de link, waardoor hij door de filter komt. Deadline, bedrag, dreiging met een deurwaarder: het klopt bijna. Het CJIB vraagt nooit om via een link of QR te betalen, en al helemaal niet via een cadeaukaart; boetes bekijk je in Mijn CJIB met DigiD. Betaalde je al, lees valse CJIB-boete betaald: wat nu.
De pakketvariant werkt met een laag bedrag aan “herbezorgkosten”, want niemand belt de bank voor twee euro. Wat de aanvaller wil, zijn je kaartgegevens of de bevestiging dat je thuis bent. Klopt het tracknummer met een zending die je verwacht? En betaal je ooit vooraf voor een herbezorging?
Horeca, stickers en vacatures
Menukaarten via een QR zijn na de pandemie blijven hangen, en een sticker op tafel is in twee seconden vervangen. Vuistregel: een menukaart hoort in je browser te passen. Vraagt de code om een app of account, dan is dat een keuze van het restaurant — of een probleem.
Stickers over echte codes worden het minst opgemerkt, want de foutcorrectie vangt de bedekking op. Kijk naar de randen: een randje, extra dikte, afwijkende printkleur, scheef geplakt. Bij laadpalen, parkeerautomaten en OV-poortjes loont die blik.
Nep-vacatures en WhatsApp-verificatie komen via sociale media: een klus waarbij je je “even” aanmeldt via een QR, of een verzoek om een code te scannen om je account te “verifiëren”. Scan je, dan geef je een apparaat toegang. Daarna leest de aanvaller mee en doet hij zich voor als jou — het patroon achter WhatsApp-fraude met “hallo pap, hallo mam”. Meer daarover in vacaturefraude: nep-vacatures herkennen.
Betaalverzoeken die meteen geld afschrijven
De variant die mensen het vaakst verrast, is geen link maar een betaalopdracht. Een SEPA-betaalverzoek bevat IBAN, bedrag en naam; scan je hem met je bankapp, dan opent een betalingsscherm met alles al ingevuld. Geen adresbalk, geen wachtwoordveld, geen tweede kans. Controleer voor je bevestigt: klopt de naam bij het IBAN, klopt het bedrag, verwacht je deze betaling?
De variant die de meeste gidsen missen: quishing als MFA-bypass
Tot hier ging het over codes die je naar een neppe pagina leiden. Er is een tweede gebruik dat professioneler en schadelijker is: de code die je laat inloggen.
Hoe een login-QR je sessie weggeeft
Je krijgt een bericht — e-mail, Teams, een gedeeld document — dat je sessie is verlopen en dat je opnieuw moet authenticeren. Er staat een QR bij. Je scant en krijgt een inlogpagina van Microsoft of Google. Die ziet er echt uit, want hij is echt: het is een proxy die de echte pagina doorgeeft. Je vult je wachtwoord in, je voert je code in, je bent binnen. Alles klopt.
Alleen zit er iemand tussen jou en de dienst. Elke byte gaat door zijn server, inclusief het sessiecookie dat je na een geslaagde login krijgt. Zodra jij klaar bent, importeert hij dat cookie en is hij binnen — zonder wachtwoord, zonder tweede factor. Dit is een adversary-in-the-middle-aanval, en daarom wordt dit soort kits als dienst verkocht. Meer over die techniek, wat je er als beheerder aan ziet en wat er structureel tegen helpt: waarom tweestapsverificatie je niet redt.
Een tweede vorm is simpeler: sommige diensten koppelen een apparaat via een code, zoals een smart-tv waar je met je telefoon inlogt. De aanvaller start die flow voor zijn eigen apparaat en stuurt jou de code met een smoes. Jij keurt goed, hij zit erin.
Waarom tweestapsverificatie dan niets doet
Veel uitleg stopt bij “gebruik MFA”, en dat is te optimistisch. Een code of pushmelding bewijst dat jij iets hebt dat de aanvaller niet heeft. Hier heeft hij dat niet nodig: jij voert de stap zelf uit, over zijn verbinding. De code is geldig, want het is een echte login bij een echte dienst.
Wat misging, was niet je wachtwoord. Je sessie was het probleem. Een wachtwoord wijzigen helpt dus niet tegen een geldig cookie; alle sessies intrekken wel. Passkeys en hardwaretokens (FIDO2) helpen structureel, want die zijn domeingebonden: een passkey voor microsoft.com doet niets op een lookalike-domein. En log nooit in naar aanleiding van een bericht — een login begint op de site of in de app, niet in je inbox.
Voor organisaties is dit het punt waar quishing een incident wordt in plaats van een irritatie. De aanvaller installeert geen malware; hij zit legitiem in je Microsoft 365 en regelt van daaruit door met mailregels, facturen en inloggegevens.
Zo check je een QR-code in twintig seconden
Je hoeft geen expert te zijn. Het draait om één gewoonte: eerst kijken, dan pas openen.
- Scan met iets dat de URL eerst toont. iOS laat een knopje met het domein zien, Android vaak een chip. Wil je zekerder, gebruik de scanner in je bankapp of de Checkjelinkje-app, of een scanner die het adres toont voordat je opent.
- Lees het domein van rechts naar links. Zoek de eerste losse schuine streep na
https://. Het stuk direct daarvoor is het echte domein; alles wat daarvoor staat is vrij invulbaar. - Let op subdomeinen.
mijn.ing.nl.secure-inloggen.comis geen ING. Het echte domein issecure-inloggen.com. - Let op streepjes, cijfers en vreemde tekens.
belastingdienst-betaal.nl,cjib-boete.net,rab0bank.nl, letters uit een ander alfabet, en dexn---notatie die daarvan het spoor is. - Vergelijk met wat je verwacht, teken voor teken. Een code van de Belastingdienst hoort naar
belastingdienst.nlte gaan, en nergens anders heen. - Nooit inloggen direct na een scan. Typ het adres zelf, of open de app.
- Twijfel je? Scan niet. Zoek de organisatie op via je browser.
Zo lees je een adres
| Wat je ziet | Echt domein | Waarom het misleidt |
|---|---|---|
https://mijn.ing.nl.secure-inloggen.com/ |
secure-inloggen.com |
subdomein met een bekende merknaam |
https://cjib.nl.boete-betaal.net/48uur |
boete-betaal.net |
idem, met urgentie in het pad |
https://belastingdienst.nl@fraude-melding.top/ |
fraude-melding.top |
alles voor de @ is gebruikersinfo |
https://bit.ly/3xYzAb |
bit.ly |
verkorte link, bestemming onbekend |
https://www.rabobank.nl/ideal |
rabobank.nl |
klopt; het pad hoort bij de eigenaar |
Die laatste rij is belangrijk: een pad als /ideal zegt niets over de betrouwbaarheid, want de eigenaar van het domein bepaalt wat daar staat. Alleen het domein zelf is het bewijs.
Al gescand, al ingelogd, al betaald: wat nu
Snelheid bepaalt hoeveel je terugkrijgt.
Je hebt betaald
Bel je bank via het nummer op de achterkant van je pas of in de app — nooit via een nummer uit het bericht. Meld dat je slachtoffer bent en vraag om blokkade. Wat daarna kan, hangt af van de betaalmethode:
- iDEAL is een directe overboeking en kent geen stornering. De bank kan wel proberen de tegenrekening te blokkeren; hoe eerder je belt, hoe meer kans.
- Automatische incasso kun je laten storneren: binnen acht weken zonder opgaaf van reden, en bij een incasso die je nooit hebt geautoriseerd tot dertien maanden terug.
- Creditcard valt onder de regels van je kaartuitgever; vraag om een chargeback.
- Tikkie of ander betaalverzoek is meestal niet terug te halen. Meld het wel in de app.
Doe aangifte bij de politie en meld het bij de Fraudehelpdesk. Dat lijkt administratief, maar het is het verschil tussen één melding en een patroon dat ze kunnen aanpakken.
Je hebt ingelogd met je wachtwoord
De gevaarlijkste situatie, want de schade komt vaak later. In deze volgorde:
- Wachtwoord wijzigen, vanaf een ander apparaat dan waarmee je inlogde.
- Alle sessies intrekken via “log overal uit” of “revoke sessions”. Dit is de belangrijkste stap: een sessiecookie overleeft een wachtwoordwijziging.
- Tweestapsverificatie opnieuw instellen: oude methode verwijderen, nieuwe authenticator koppelen, herstelcodes opnieuw genereren.
- Instellingen nalopen: doorgestuurde e-mail, app-wachtwoorden, gekoppelde apparaten, extra gebruikers, en bij je bank nieuwe tegenrekeningen of verhoogde limieten.
- Apparaten controleren. Twijfel je of er meer speelt, zie hoe weet ik of mijn telefoon gehackt is.
Gaat het om een werkaccount, bel direct je IT-afdeling; zij zien vanaf welk adres is ingelogd en kunnen de sessie beëindigen. Meer eerste stappen staan in eerste hulp bij hacks, en als je account al is overgenomen in account gehackt: wat nu.
Je wordt gebeld, of je wilt bewijs
Na een scan volgt soms een telefoontje: “met de fraudehelpdesk van uw bank”, “met Microsoft”. Ze weten je naam en je laatste transactie, want ze hebben net je gegevens gekregen of ze lezen mee. Hang op en bel zelf je bank. Een echte bank vraagt niet om iets te scannen, geld naar een “veilige rekening” te boeken of een programma te installeren. Meer daarover in helpdesk fraude: Microsoft of bank gebeld.
Bewaar ondertussen het bewijs: foto’s van de code op de plek waar je hem vond, van de pagina die opende en van het adres in je browser, plus tijd, locatie en bedrag. Verwijder niets voordat je aangifte hebt gedaan.
Voor organisaties: QR-hygiëne van print tot plaquette
Een QR-code is een publicatiekanaal dat je jaren later nog tegenkomt, op een plek die je niet meer beheert. Behandel hem alsof je er je merknaam op drukt.
Bij ontwerp en drukwerk
- Gebruik je eigen domein.
qr.jouwdomein.nlin plaats van een gratis dienst. Dan bepaal je zelf waar de code heen gaat en kun je later omleiden zonder opnieuw te drukken. - Geen QR naar een inlogpagina. Wie moet inloggen, doet dat via de app of de site.
- Zet de bestemming in tekst erbij. Voor wie niet wil scannen, en voor iedereen die wil controleren.
- Leg het beheer vast. Wie bezit het redirect-domein, wanneer verloopt het, wie mag wijzigen? Een vergeten domein wordt opgekocht.
- Vermijd dynamische codes van derden voor permanent drukwerk. Stopt de leverancier, dan verwijst je gedrukte code naar niets.
Na publicatie
- Visuele ronde langs alle fysieke codes: automaten, laadpalen, tafels, posters. Eens per kwartaal is realistisch, bij evenementen vooraf en tijdens.
- Register bijhouden: locatie, datum, bestemming, eigenaar, vervaldatum. Zonder register is “een code bij de ingang” niet te herleiden.
- Afwijkende code gevonden? Foto maken, afdekken of verwijderen, melden. Niet eerst scannen om te kijken wat erin zit.
Als iemand een malafide code meldt
- Weghalen, met bewijs: foto, locatie, tijdstip.
- Vastleggen waar hij heen wees, zonder de link op een werktoestel te openen. Vraag de melder om een screenshot.
- Melden bij de Fraudehelpdesk, de politie, de hoster van de pagina en de instantie wiens naam wordt misbruikt.
- Eigen kanalen informeren: balie, klantenservice, sociale media. Mensen die net scanden moeten weten wat ze moeten doen.
- Uitzoeken hoe hij er kwam: eigen drukwerk, een leverancier, of iemand met fysieke toegang.
- Vastleggen en zo nodig melden. Zijn er persoonsgegevens buitgemaakt, dan kan de meldplicht bij de Autoriteit Persoonsgegevens gelden.
Vijf regels om te onthouden
- Scan alleen als je weet wat je verwacht te vinden. Geen verwachting, geen scan.
- Eerst het adres, dan de pagina. Lees het domein van rechts naar links.
- Nooit inloggen direct na een scan. Typ het adres, of open de app.
- Betaal geen naheffing, boete of herbezorgkosten via een QR uit een bericht.
- Al gescand? Sessies intrekken, bank bellen, aangifte doen, bewijs bewaren.
Verder lezen
- Phishing herkennen: 7 signalen — de basis onder alles hierboven.
- Eerste hulp bij hacks — stap voor stap als het al mis is.
- Helpdesk fraude: Microsoft of bank gebeld — als de aanvaller belt.