// BRIEFING

Your website is a front door. Uw website is een voordeur.

The public website and the customer portal are the most exposed systems we own. Anyone on earth can knock, day and night — in plain language: four ways they get in, and what helps most against each one. De publieke website en het klantportaal zijn de meest blootgestelde systemen die we hebben. Iedereen ter wereld kan aankloppen, dag en nacht — in gewone taal: vier manieren waarop ze binnenkomen, en wat tegen elk daarvan het meest helpt.

The two-minute video of this briefing.De video van twee minuten over deze briefing (Engels gesproken).
// STEP 01STAP 01

A search box that talks straight to the database. Een zoekvak dat rechtstreeks met de database praat.

injection / untrusted input treated as a command injectie / invoer van buiten uitgevoerd als opdracht
SEARCH FIELDZOEKVELD
🧑‍💻
Anyone onlineIedereen online
🗄️
Customer databaseKlantendatabase
search: winter shoeszoek: winterschoenen search: ' GIVE ME EVERYTHING --zoek: ' GEEF ME ALLES --
📄
📄
📄
📄

Every form on our website — search, login, contact, order tracking — takes text from a stranger and hands it to our systems. If the code behind the form does not strictly separate what the visitor typed from what the system should do, the visitor can type instructions. A crafted search term becomes “show me every customer”. Its close cousin, broken access control, is number one in the OWASP Top 10:2025: change the order number in the address bar and you see someone else's order. No password is guessed; the website simply does what it was asked.

Business impact: the entire customer database leaves through the front page, often in one request. That is usually a personal-data breach: the GDPR requires notifying the regulator within 72 hours, plus the customer letters, the press questions, and the brand damage of “they left the door open”. The defect is decades old and preventable; finding it in our own code costs a fraction of finding it in the news.

Elk formulier op onze website — zoeken, inloggen, contact, orderstatus — neemt tekst aan van een vreemde en geeft die door aan onze systemen. Als de code achter het formulier niet strikt scheidt wat de bezoeker typte van wat het systeem moet doen, kan de bezoeker opdrachten typen. Een slim gekozen zoekterm wordt “laat me alle klanten zien”. Een naaste verwant, gebrekkige toegangscontrole, staat op één in de OWASP Top 10:2025: wijzig het ordernummer in de adresbalk en u ziet de bestelling van een ander. Er wordt geen wachtwoord geraden; de website doet gewoon wat hem gevraagd wordt.

Bedrijfsimpact: de volledige klantendatabase vertrekt via de voorpagina, vaak in één verzoek. Dat is meestal een datalek: de AVG vraagt melding bij de Autoriteit Persoonsgegevens binnen 72 uur, plus de brieven aan klanten, de vragen van de pers en de reputatieschade van “ze hadden de deur open laten staan”. De fout is decennia oud en te voorkomen; hem vinden in onze eigen code kost een fractie van hem terugvinden in het nieuws.

⚠ WHOLE DATABASE · ONE REQUEST · NO LOGINHELE DATABASE · ÉÉN VERZOEK · GEEN INLOG ✔ SUGGESTED: SAFE QUERY CODE + ACCESS CHECKS + TESTING · WAF AS BACKSTOPAANBEVOLEN: VEILIGE QUERYCODE + TOEGANGSCONTROLE + TESTEN · WAF ALS VANGNET
What AI changes hereWat AI hier verandert
Break it with AIBreken met AIEasyMakkelijk

AI-assisted scanning tools can fuzz every form on a website automatically, generating thousands of crafted inputs a minute and recognising which one breaks through, turning a manual attacker's afternoon of guessing into an automated sweep.AI-ondersteunde scantools kunnen automatisch elk formulier op een website fuzzen, duizenden geprepareerde invoerwaarden per minuut genereren en herkennen welke ervoor doorbreekt, en maken van een middag handmatig gokken een volledig geautomatiseerde sweep.

Abuse it with AIMisbruiken met AIEasyMakkelijk

A chatbot wired into the customer database to answer questions faster is the modern version of this same weakness: a crafted question can make it reveal records it was never meant to share, no code required.Een chatbot die aan de klantendatabase is gekoppeld om vragen sneller te beantwoorden, is de moderne versie van dezelfde zwakte: een geprepareerde vraag kan hem records laten prijsgeven die nooit gedeeld hadden mogen worden, zonder één regel code.

Enforce it with AIAfdwingen met AITest with AI before releaseTesten met AI vóór release

AI-assisted testing tools can generate the same crafted inputs an attacker would try and run them automatically before every release, catching an injection flaw in the build instead of on the live site. Code that keeps input and commands apart remains the real remedy.AI-ondersteunde testtools kunnen dezelfde geprepareerde invoer genereren die een aanvaller zou proberen en die automatisch uitvoeren vóór elke release, zodat een injectiefout in de build wordt gevonden in plaats van op de live site. Code die invoer en opdrachten gescheiden houdt, blijft de echte oplossing.

// STEP 02STAP 02

The plugin everyone forgot. De plug-in die iedereen vergat.

outdated web software / known holes, public instructions verouderde websoftware / bekende gaten, openbare handleiding
WHAT THE SITE IS MADE OFWAAR DE SITE VAN GEMAAKT IS
CMScorekern2026.3
FormsFormulierenpluginplug-in8.1
3 YEARS OLD3 JAAR OUDGalleryGalerijpluginplug-in2.4
ThemeThemadesignontwerp5.0
Serverweb stackwebstackLTS
🕳️HOLE PUBLISHED · SCANNERS FIND IT IN HOURSGAT GEPUBLICEERD · SCANNERS VINDEN HET IN UREN

A website is not one thing. It is a content system, a dozen plugins, a theme, a web server and the libraries underneath — each written by someone else, each with its own release schedule. When a hole is found in any of them, the fix and the description of the hole are published together. From that moment, automated scanners sweep the entire internet for sites still running the old version. The gallery plugin an agency installed years ago, for a campaign nobody remembers, is exactly what they find.

Business impact: full control of the website — defacement, a fake login page under our own domain, malware served to every visitor, or a quiet foothold from which the attacker looks for a path inward. The uncomfortable truth is that nobody had to be clever. The instructions were public, and the fix had been available for months.

Een website is niet één ding. Het is een contentsysteem, een dozijn plug-ins, een thema, een webserver en de bibliotheken daaronder — elk door iemand anders geschreven, elk met een eigen releaseritme. Wordt er in één van die onderdelen een gat gevonden, dan worden de reparatie en de beschrijving van het gat samen gepubliceerd. Vanaf dat moment doorzoeken automatische scanners het hele internet naar sites die nog op de oude versie draaien. De galerij-plug-in die een bureau jaren geleden installeerde, voor een campagne die niemand meer kent, is precies wat ze vinden.

Bedrijfsimpact: volledige controle over de website — bekladding, een nep-inlogpagina onder ons eigen domein, malware voor elke bezoeker, of een stil bruggenhoofd van waaruit de aanvaller een weg naar binnen zoekt. De ongemakkelijke waarheid: niemand hoefde slim te zijn. De handleiding was openbaar, en de reparatie was al maanden beschikbaar.

⚠ PUBLIC RECIPE · AUTOMATED · FOUND IN HOURSOPENBAAR RECEPT · GEAUTOMATISEERD · IN UREN GEVONDEN ✔ SUGGESTED: INVENTORY + PATCH THE WEB STACK IN DAYSAANBEVOLEN: INVENTARIS + WEBSTACK BINNEN DAGEN PATCHEN
What AI changes hereWat AI hier verandert
Break it with AIBreken met AIEasyMakkelijk

The moment a hole in a plugin is published, AI tools can turn the description into working exploit code within hours, and automated scanners already sweep the whole internet for sites still running the old version.Zodra een gat in een plug-in wordt gepubliceerd, kunnen AI-tools de beschrijving binnen uren omzetten in werkende exploitcode, en doorzoeken geautomatiseerde scanners dan al het hele internet naar sites die nog de oude versie draaien.

Abuse it with AIMisbruiken met AIMediumGemiddeld

AI coding tools make it faster to add a new plugin or a generated snippet of code to the site, but not faster to track and patch it afterwards, so the pile of unmaintained components grows quicker than before.AI-codeertools maken het sneller om een nieuwe plug-in of een gegenereerd stukje code aan de site toe te voegen, maar niet om het daarna bij te houden en te patchen, waardoor de stapel onbeheerde onderdelen sneller groeit dan voorheen.

Enforce it with AIAfdwingen met AILet AI track every advisoryAI volgt elke waarschuwing

AI tools can read every new advisory the moment it is published and match it against our own component inventory automatically, cutting the time to know we are affected from weeks to minutes. Patching within days remains the step that closes the hole.AI-tools kunnen elke nieuwe waarschuwing lezen zodra die verschijnt en die automatisch koppelen aan onze eigen componenteninventaris, waardoor de tijd om te weten dat wij getroffen zijn daalt van weken naar minuten. Binnen dagen patchen blijft de stap die het gat dicht.

// STEP 03STAP 03

Our customers' accounts, opened with someone else's leak. De accounts van onze klanten, geopend met het lek van een ander.

account takeover / credential stuffing accountovername / credential stuffing
LOGIN PAGE · 03:00INLOGPAGINA · 03:00
🤖
Bot networkBotnetwerk
🔐
Customer portalKlantportaal
anna@… ✔ j.deVries@… ✔ m.bakker@… ✔
🔑
🔑
🔑
🔑

Billions of e-mail and password pairs from other companies' breaches circulate freely. People reuse passwords, so a bot network tries those pairs against our login page — millions of attempts a night, spread across thousands of addresses so no single one looks suspicious. A small share works. The attacker is now inside real customer accounts: order history, saved addresses, stored payment methods, loyalty balances, and the ability to change the delivery address on the next order.

Business impact: fraud that we refund, loyalty points that vanish, customers who blame us — correctly, from their point of view, because it happened on our site. Support costs spike, chargebacks follow, and “was your account hacked?” becomes a headline about us, not about the site where the password actually leaked. A login page that only checks the password is a login page that checks nothing the attacker does not already have.

Miljarden combinaties van e-mailadres en wachtwoord uit lekken bij andere bedrijven circuleren vrij. Mensen hergebruiken wachtwoorden, dus een botnetwerk probeert die combinaties op onze inlogpagina — miljoenen pogingen per nacht, verspreid over duizenden adressen zodat geen enkel adres opvalt. Een klein deel werkt. De aanvaller zit nu in echte klantaccounts: bestelhistorie, opgeslagen adressen, bewaarde betaalmethoden, spaarsaldo's, en de mogelijkheid om het bezorgadres van de volgende bestelling te wijzigen.

Bedrijfsimpact: fraude die wij terugbetalen, spaarpunten die verdwijnen, klanten die ons de schuld geven — terecht, vanuit hun perspectief, want het gebeurde op onze site. Supportkosten schieten omhoog, chargebacks volgen, en “is uw account gehackt?” wordt een kop over ons, niet over de site waar het wachtwoord werkelijk lekte. Een inlogpagina die alleen het wachtwoord controleert, controleert niets wat de aanvaller niet al heeft.

⚠ FRAUD ON OUR SITE · OUR REFUNDS · OUR HEADLINEFRAUDE OP ONZE SITE · ONZE TERUGBETALINGEN · ONZE KRANTENKOP ✔ SUGGESTED: PASSKEYS OR MFA FOR CUSTOMERS + RATE LIMITS + BOT MANAGEMENTAANBEVOLEN: PASSKEYS OF MFA VOOR KLANTEN + LIMIETEN + BOTBEHEER
What AI changes hereWat AI hier verandert
Break it with AIBreken met AIEasyMakkelijk

AI now solves the CAPTCHA challenges meant to stop automated logins, and mimics human typing rhythm and mouse movement closely enough that a bot trying stolen passwords is barely distinguishable from a real, tired customer at night.AI lost nu de CAPTCHA-uitdagingen op die automatische inlogpogingen moesten stoppen, en bootst typeritme en muisbewegingen zo goed na dat een bot met gestolen wachtwoorden nauwelijks te onderscheiden is van een echte, moe geworden klant 's nachts.

Abuse it with AIMisbruiken met AIEasyMakkelijk

Legitimate AI shopping assistants now log into customer accounts automatically on a person's behalf, which makes it harder to tell a real automated agent from a credential-stuffing bot, giving attackers a new kind of traffic to hide inside.Legitieme AI-boodschappenassistenten loggen nu automatisch namens een klant in op accounts, waardoor het lastiger wordt een echte geautomatiseerde agent te onderscheiden van een credential-stuffingbot, en aanvallers een nieuw soort verkeer krijgen om in te verstoppen.

Enforce it with AIAfdwingen met AITell bots from people fasterSneller bots van mensen onderscheiden

AI-based bot management can spot the subtler patterns that separate a scripted login attempt from a real customer, even as bots get better at mimicking humans. Passkeys or MFA remain the strongest step: a leaked password alone no longer opens the account.AI-gebaseerd botbeheer kan de subtielere patronen herkennen die een gescripte inlogpoging onderscheiden van een echte klant, ook als bots mensen steeds beter nabootsen. Passkeys of MFA blijven de sterkste stap: een gelekt wachtwoord alleen opent het account niet meer.

// STEP 04STAP 04

Our page, their code. Onze pagina, hun code.

web skimming / third-party scripts on checkout and login web skimming / scripts van derden op afreken- en inlogpagina
CHECKOUT PAGEAFREKENPAGINA
analytics.js chat-widget.js fonts-cdn.js cookie-banner.js
💳
CustomerKlant
🛒
Our checkoutOnze kassa
💳
🕵️COPY OF EVERY CARDKOPIE VAN ELKE KAART

Our checkout and login pages load code from other companies: analytics, a chat widget, fonts, a cookie banner, a review badge. That code runs in the customer's browser with the same rights as our own — it can read every field on the page. When one of those suppliers is compromised, or a domain they used expires and is bought by someone else, the script is quietly swapped. Payments still succeed. The customer sees nothing. But every card number and password typed on our page is also sent to a third party.

Business impact: card-brand fines and forced re-certification, the cost of reissuing thousands of cards, a mandatory breach notification, and a story in which our name is on the page where the theft happened — even though the code was not ours. Every script we allow on a payment or login page is a supplier we have handed the keys to. Since 31 March 2025, PCI DSS 4.0.1 requirements 6.4.3 and 11.6.1 require a justified inventory of those scripts and tamper detection on payment pages.

Onze afreken- en inlogpagina's laden code van andere bedrijven: analytics, een chatwidget, lettertypen, een cookiebanner, een reviewbadge. Die code draait in de browser van de klant met dezelfde rechten als onze eigen code — ze kan elk veld op de pagina lezen. Wordt één van die leveranciers gehackt, of verloopt een domein dat zij gebruikten en koopt iemand anders het, dan wordt het script stilletjes vervangen. Betalingen slagen gewoon. De klant ziet niets. Maar elk kaartnummer en wachtwoord dat op onze pagina wordt getypt, gaat óók naar een derde.

Bedrijfsimpact: boetes van de kaartmaatschappijen en verplichte hercertificering, de kosten van duizenden nieuwe kaarten, een verplichte datalekmelding, en een verhaal waarin onze naam op de pagina staat waar de diefstal plaatsvond — ook al was de code niet van ons. Elk script dat we toelaten op een betaal- of inlogpagina is een leverancier aan wie we de sleutels hebben gegeven. Sinds 31 maart 2025 eisen PCI DSS 4.0.1-eisen 6.4.3 en 11.6.1 een onderbouwde inventaris van die scripts en detectie van wijzigingen op betaalpagina's.

⚠ INVISIBLE TO CUSTOMER · INVISIBLE TO US · CARD-BRAND FINESONZICHTBAAR VOOR KLANT · ONZICHTBAAR VOOR ONS · BOETES KAARTMAATSCHAPPIJEN ✔ SUGGESTED: SCRIPT INVENTORY + INTEGRITY CHECKS + CONTENT SECURITY POLICYAANBEVOLEN: SCRIPTINVENTARIS + INTEGRITEITSCONTROLE + CONTENT SECURITY POLICY
What AI changes hereWat AI hier verandert
Break it with AIBreken met AIMediumGemiddeld

AI helps an attacker write skimming code that mimics the style of the legitimate script it replaces closely enough to pass a casual review, but reaching that position still needs a compromised supplier or an expired domain first.AI helpt een aanvaller skimmingcode schrijven die de stijl van het echte script dat het vervangt zo goed nabootst dat het een oppervlakkige controle doorstaat, maar die positie bereiken vereist nog steeds eerst een gehackte leverancier of een verlopen domein.

Abuse it with AIMisbruiken met AIMediumGemiddeld

An AI chat widget added to the checkout page for customer support runs with the same access as every other script there, and can read card and password fields exactly like a skimmer would, intended or not.Een AI-chatwidget die voor klantenservice op de afrekenpagina wordt geplaatst, draait met dezelfde toegang als elk ander script daar, en kan kaart- en wachtwoordvelden lezen precies zoals een skimmer dat zou doen, bedoeld of niet.

Enforce it with AIAfdwingen met AIWatch every script's behaviourGedrag van elk script bewaken

AI-based monitoring can flag a script on the checkout page suddenly reading fields it never touched before, catching a swap within minutes. A named script inventory, integrity checks and a strict content security policy remain the foundation.AI-gebaseerde monitoring kan een script op de afrekenpagina signaleren dat plotseling velden leest die het nooit eerder aanraakte, en zo een vervanging binnen minuten opvangen. Een scriptinventaris, integriteitscontrole en een strikte content security policy blijven het fundament.

// CONTROLSMAATREGELEN

What actually stops this. Wat dit daadwerkelijk stopt.

a short list — most of it is discipline around what we already run een korte lijst — het meeste is discipline rond wat we al draaien
DEFENCE STACKVERDEDIGINGSLAGEN
WAF + BOTS PATCH CLOCKPATCHKLOK PENTESTPENTEST PASSKEYS SCRIPT CONTROLSCRIPTCONTROLE
ControlStopsIn one line
WAF + bot managementInjection (01), Takeover (03)A backstop: a web application firewall that blocks known attack patterns and tells human visitors from bot floods.
Patch clockUnpatched (02)An inventory of every component the site runs, and a rule, worth agreeing, that web-facing holes are closed within days, not quarters.
Safe code + testingInjection (01)Queries that keep input apart from commands, an access check on every request, and automated security checks in the build.
Yearly pentestAll fourSomeone paid to break in, once a year and after every major change, reporting to us before anyone else finds it.
Passkeys / MFATakeover (03)Customer logins that a leaked password alone cannot open, plus limits on how many attempts one address may make.
Script controlSkimming (04)A named list of every third-party script on payment and login pages, integrity checks so a swapped file is refused, and a content security policy so data can only go where we say.
SeparationUnpatched (02)The website lives in its own zone: a compromised page cannot reach the office network or internal systems.
Admin loggingAll fourEvery login and change in the site's admin panel recorded and reviewed — the difference between “we were breached” and “we know what they did”.
Disclosure pageBlind spotsA public address where security researchers can report a hole, so we hear it from them first, not from a leak site.
MaatregelStoptIn één zin
WAF + botbeheerInjectie (01), Overname (03)Een vangnet: een webapplicatiefirewall die bekende aanvalspatronen blokkeert en menselijke bezoekers onderscheidt van botstromen.
PatchklokVerouderd (02)Een inventaris van elk onderdeel dat de site draait, en een afspraak dat gaten aan de internetkant binnen dagen dicht zijn, niet binnen kwartalen.
Veilige code + testenInjectie (01)Queries die invoer en opdrachten gescheiden houden, een toegangscontrole bij elk verzoek, en automatische beveiligingscontroles in de build.
Jaarlijkse pentestAlle vierIemand die betaald wordt om in te breken, jaarlijks en na elke grote wijziging, en aan ons rapporteert voordat een ander het vindt.
Passkeys / MFAOvername (03)Klantinlogs die met alleen een gelekt wachtwoord niet opengaan, plus een limiet op het aantal pogingen per adres.
ScriptcontroleSkimming (04)Een lijst met elk script van derden op betaal- en inlogpagina's, integriteitscontrole zodat een vervangen bestand wordt geweigerd, en een content security policy zodat gegevens alleen gaan waar wij dat zeggen.
ScheidingVerouderd (02)De website staat in een eigen zone: een gehackte pagina kan niet bij het kantoornetwerk of interne systemen.
BeheerloggingAlle vierElke inlog en wijziging in het beheerpaneel vastgelegd en bekeken — het verschil tussen “we zijn gehackt” en “we weten wat ze deden”.
MeldpaginaBlinde vlekkenEen openbaar adres waar beveiligingsonderzoekers een gat kunnen melden, zodat wij het eerst van hen horen en niet van een leksite.
The board-level point: the website carries our brand and our customer data at the same time, and it is the one system every attacker on earth can reach without asking. Two questions settle whether we are in control: when did someone last try to break it on our behalf, and who is paged — by name — when it breaks for real? De kern voor de directie: de website draagt ons merk en onze klantgegevens tegelijk, en het is het ene systeem dat elke aanvaller ter wereld kan bereiken zonder te vragen. Twee vragen bepalen of we in controle zijn: wanneer heeft iemand er voor het laatst namens ons op ingebroken, en wie wordt er — bij naam — gebeld als het echt misgaat?
// RISK & COMPLIANCERISICO & COMPLIANCE

On the register, and in the audit. In het risicoregister, en in de audit.

indicative — confirm scope and deadlines with legal and complianceindicatief — bevestig reikwijdte en termijnen met legal en compliance
LikelihoodKansHighHoog

The website is reachable by everyone, scanned by bots around the clock, and rebuilt by agencies more often than it is tested.De website is voor iedereen bereikbaar, wordt dag en nacht door bots gescand en wordt vaker door bureaus verbouwd dan getest.

ImpactImpactHighHoog

Customer data or card numbers leaked under our own brand: notification duties, refunds and card-brand fines, and a defaced or weaponised site in the meantime.Klantgegevens of kaartnummers gelekt onder ons eigen merk: meldplichten, terugbetalingen en boetes van kaartmaatschappijen, en ondertussen een bekladde of misbruikte site.

Residual after controlsRestrisico na maatregelenMediumMiddel

New flaws keep appearing. A patch clock, safe code and testing, passkeys and script control turn a breach into a blocked attempt or a contained incident.Nieuwe fouten blijven komen. Een patchklok, veilige code en testen, passkeys en scriptcontrole maken van een lek een geblokkeerde poging of een beheersbaar incident.

Risk ownerRisico-eigenaarCMO / CDOCMO / CDO

Whoever owns the website and the portal owns this risk, with the CISO as second line. Not the agency, not the hosting provider.Wie eigenaar is van de website en het portaal, is eigenaar van dit risico, met de CISO als tweede lijn. Niet het bureau, niet de hostingpartij.

Key risk indicatorsKernrisico-indicatorenFour numbers to ask forVier getallen om naar te vragen

Days since the last penetration test of the site and portal · days to patch a critical flaw in the web stack · % of customer logins protected by passkeys or MFA · number of third-party scripts on payment and login pages, and how many have an integrity check.Dagen sinds de laatste pentest van site en portaal · dagen tot een kritieke fout in de webstack is gepatcht · % klantinlogs beschermd met passkeys of MFA · aantal scripts van derden op betaal- en inlogpagina's, en hoeveel daarvan een integriteitscontrole hebben.

Risk register entryTekst voor het risicoregisterOne sentenceEén zin

“A flaw in the public website or customer portal — in our code, an outdated component, weak customer logins or a third-party script — exposes customer and payment data and hands an attacker control of our brand's front door.”“Een fout in de publieke website of het klantportaal — in onze code, een verouderd onderdeel, zwakke klantinlogs of een script van derden — legt klant- en betaalgegevens bloot en geeft een aanvaller de controle over de voordeur van ons merk.”

FrameworkWhat it requires of youWhen a supplier hands you their reportWhen this incident happens
GDPR · PCICustomer data leaking through the website is usually a personal-data breach: GDPR requires notifying the Autoriteit Persoonsgegevens within 72 hours (Art. 33) and informing affected customers when the risk is high (Art. 34). PCI DSS 4.0.1 applies to us as the merchant; requirements 6.4.3 and 11.6.1 (script inventory, tamper detection) have been mandatory since 31 March 2025. Skimming can mean forensic investigation, fines and re-certification.The agency, hosting provider and SaaS platform behind the site are processors. GDPR requires them to report a breach to us without undue delay; check that the agreement says so and that a phone number is behind it.Start the 72-hour clock at the moment we became aware, not when we finished investigating. Card skimming triggers a separate notification to the acquirer and card brands. Confirm scope and wording with legal.
NIS2If we fall under NIS2 (in the Netherlands: the Cyberbeveiligingswet), the website and portal are part of the systems it requires us to protect: vulnerability handling, secure development, supply-chain security and MFA are named measures, and management is accountable for them.There is no NIS2 certificate. Ask the agency and hosting provider how they patch, test and separate our site from others, and put their duty to warn us of incidents in the contract.A public service outage or a large customer-data leak can count as a significant incident if it meets the thresholds: early warning within 24 hours of becoming aware, incident notification within 72 hours, final report within one month.
DORAFor financial entities: if the customer portal supports a critical or important function, it falls under the ICT risk framework, its providers go in the register of ICT third parties, and it is in scope for resilience testing including threat-led penetration tests.The report is input, not a substitute. Critical ICT providers behind the portal need the contractual clauses DORA prescribes, including audit rights, incident reporting and an exit strategy.If a portal incident is classified as major: initial notification within 4 hours of classifying it (at most 24 hours after becoming aware), intermediate report within 72 hours of that, final report within one month. DORA requires informing clients whose financial interests are affected.
SOC 2If the platform behind our site is ours to certify: change management, vulnerability management and logical access are the controls an auditor will test against this scenario. Every exception, including a missed patch window, is reported.Read the system description first: is our website's platform even in scope? Then check the period and the exceptions, and read the complementary user entity controls — the plugins, scripts and customer login settings are usually ours to manage.The incident appears in the platform provider's next report as a deviation, and our customers will ask for a bridge letter and our root-cause analysis, whether the flaw was in their platform or in our plugin.
ISAE 3402Assurance over outsourced processes relevant to financial reporting. The web layer is rarely in scope unless the portal itself processes transactions such as payments or orders that feed the books.Read the control objectives. If the website and portal are not among them, the report says nothing about injection, patching of the web stack or customer logins, however reassuring the opinion looks.ISAE 3402 creates no duty to notify user auditors. Expect a deviation in the next report, and ask for interim disclosure in the contract.
KaderWat het van u vraagtAls een leverancier u zijn rapport geeftAls dit incident u treft
AVG · PCIKlantgegevens die via de website lekken, zijn meestal een datalek: de AVG vraagt melding bij de Autoriteit Persoonsgegevens binnen 72 uur (art. 33) en het informeren van getroffen klanten als het risico hoog is (art. 34). PCI DSS 4.0.1 geldt voor ons als handelaar; eisen 6.4.3 en 11.6.1 (scriptinventaris, detectie van wijzigingen) zijn sinds 31 maart 2025 verplicht. Skimming kan leiden tot forensisch onderzoek, boetes en hercertificering.Het bureau, de hostingpartij en het SaaS-platform achter de site zijn verwerkers. De AVG verplicht hen een lek onverwijld aan ons te melden; controleer of de overeenkomst dat vastlegt en of er een telefoonnummer achter zit.De 72 uur beginnen op het moment dat wij ervan wisten, niet wanneer het onderzoek klaar was. Skimming van kaarten vraagt een aparte melding aan de acquirer en de kaartmaatschappijen. Bevestig reikwijdte en formulering met legal.
NIS2Vallen wij onder NIS2 (in Nederland de Cyberbeveiligingswet), dan horen website en portaal bij de systemen die we volgens de wet moeten beschermen: kwetsbaarheidsbeheer, veilige ontwikkeling, ketenbeveiliging en MFA zijn benoemde maatregelen, en het bestuur is daarvoor aansprakelijk.Er bestaat geen NIS2-certificaat. Vraag het bureau en de hostingpartij hoe zij patchen, testen en onze site scheiden van andere, en leg hun plicht om ons bij incidenten te waarschuwen vast in het contract.Een publieke dienst die uitvalt of een groot lek van klantgegevens kan als significant incident gelden als het de drempels haalt: vroegtijdige waarschuwing binnen 24 uur na kennisname, incidentmelding binnen 72 uur, eindrapport binnen een maand.
DORAVoor financiële instellingen: ondersteunt het klantportaal een kritieke of belangrijke functie, dan valt het onder het ICT-risicokader, gaan de leveranciers ervan in het register van ICT-derden, en is het in scope voor weerbaarheidstesten, inclusief dreigingsgestuurde penetratietests.Het rapport is input, geen vervanging. Kritieke ICT-leveranciers achter het portaal vereisen de contractbepalingen die DORA voorschrijft, inclusief auditrechten, incidentmelding en een exitstrategie.Wordt een incident op het portaal als ernstig geclassificeerd: eerste melding binnen 4 uur na die classificatie (uiterlijk 24 uur na kennisname), tussenrapport binnen 72 uur daarna, eindrapport binnen een maand. DORA vraagt klanten te informeren als hun financiële belangen worden geraakt.
SOC 2Is het platform achter onze site het onze om te certificeren, dan zijn wijzigingsbeheer, kwetsbaarheidsbeheer en logische toegang de maatregelen die een auditor tegen dit scenario toetst. Elke afwijking, ook een gemiste patchtermijn, staat in het rapport.Lees eerst de systeembeschrijving: valt het platform van onze website überhaupt binnen de scope? Controleer daarna de periode en de afwijkingen, en lees de complementary user entity controls — de plug-ins, scripts en instellingen voor klantinlogs zijn meestal onze verantwoordelijkheid.Het incident verschijnt in het volgende rapport van de platformleverancier als afwijking, en onze klanten vragen om een bridge letter en onze oorzaakanalyse, of de fout nu in hun platform zat of in onze plug-in.
ISAE 3402Zekerheid over uitbestede processen die relevant zijn voor de financiële verslaggeving. De weblaag valt zelden binnen de scope, tenzij het portaal zelf transacties verwerkt, zoals betalingen of bestellingen die in de boeken landen.Lees de beheersdoelstellingen. Staan website en portaal er niet bij, dan zegt het rapport niets over injectie, patchen van de webstack of klantinlogs, hoe geruststellend het oordeel ook leest.ISAE 3402 schept geen plicht om de auditors van klanten te informeren. Verwacht een afwijking in het volgende rapport, en vraag in het contract om tussentijdse melding.

Checked against: OWASP Top 10:2025, PCI SSC on PCI DSS 4.0.1 future-dated requirements (Aug 2024, effective 31 March 2025), GDPR Art. 33–34, NIS2 Art. 23, DORA Art. 19 · September 2026.

Gecontroleerd tegen: OWASP Top 10:2025, PCI SSC over de toekomstige eisen van PCI DSS 4.0.1 (aug 2024, van kracht 31 maart 2025), AVG art. 33–34, NIS2 art. 23, DORA art. 19 · september 2026.

Missing anything?Mist er iets? Something not correct?Klopt er iets niet?