Gegevensbeschermingseffectbeoordeling (Art. 35 AVG)

Dit document is in meerdere talen gepubliceerd. Bij verschillen tussen de taalversies is de Poolse versie bindend.

Versie 1.0 · Laatst bijgewerkt: 16 oktober 2026

1. Waar het om gaat en wat deze pagina is

Deze pagina is de gegevensbeschermingseffectbeoordeling (GEB) van formexposed op grond van Art. 35 AVG. Eerst wordt de voorvraag beantwoord of een GEB überhaupt vereist is – voor elke verwerking afzonderlijk, niet voor de dienst als geheel. Waar het antwoord ja is, wordt de beoordeling uitgevoerd volgens Art. 35(7)(a) tot en met (d): een systematische beschrijving, noodzaak en evenredigheid, de risico's voor de betrokkenen en de maatregelen om die aan te pakken. Daarna volgen het restrisico, de vraag naar een voorafgaande raadpleging op grond van Art. 36 en de regels voor herziening.

Art. 35 verplicht niet tot publicatie van een GEB. Wij publiceren haar om twee redenen. Ten eerste hebben Klanten die de bezorgingscontrole of de scan achter de login gebruiken, voor hun eigen beoordeling feiten nodig die alleen wij kennen; die feiten zijn wij hun als verwerker hoe dan ook verschuldigd (Art. 28(3)(f) AVG). Ten tweede controleert onze crawler websites waarvan de beheerders ons niet kennen. Zij moeten kunnen lezen welke risico's wij voor hen en voor de mensen op hun pagina's zien, en wat wij daaraan doen.

Juridisch karakter. Deze GEB is documentatie van de verwerkingsverantwoordelijke op grond van Art. 35 AVG, die wij vrijwillig publiceren. Zij maakt geen deel uit van een overeenkomst en vormt geen toezegging, garantie of afspraak over kwaliteit jegens Klanten of derden. Welke diensten en waarborgen wij Klanten verschuldigd zijn, wordt geregeld door de Gebruiksvoorwaarden, de Verwerkersovereenkomst en de bijlagen daarbij; ten aanzien van deze verplichtingen gaan zij vóór deze pagina. De pagina beschrijft de stand op de datum van deze versie. Risico-inschattingen en beoordelingen zijn ons eigen standpunt en lopen niet vooruit op een juridische beoordeling door een toezichthoudende autoriteit of een rechter; als “gepland” beschreven maatregelen zijn voornemens zonder toegezegde datum. Voor Klanten is de pagina een basis voor hun eigen beoordeling, geen juridisch advies.

Dit is de eerste versie van de drempelbeoordeling. Zij onderzoekt per verwerking of een GEB vereist is en legt het resultaat vast in paragraaf 3.5.

Voor elke feitelijke uitspraak geldt hetzelfde beginsel als in onze andere juridische documenten: gemeten, niet beoogd. Wat in de code of in de database aantoonbaar is, staat hier met bronvermelding. Wat niet kon worden aangetoond, is gemarkeerd als “niet geverifieerd”. Wat slechts gepland is, heet “gepland”. Open punten noemen wij openlijk, samen met de geplande maatregel; een GEB die alleen sterke punten opsomt, helpt de mensen om wie het gaat niet.

Begrippen: een beheerder is degene die een gecontroleerde website exploiteert. Een Klant heeft een account bij formexposed. Een bezoeker is degene die de website van een Klant gebruikt, bijvoorbeeld het contactformulier ervan. Een bronvermelding verwijst naar een bestand, functie of instelling in de broncode, gemeten aan de stand van het ontwikkelsysteem op 11 oktober 2026.

Bij de openheid trekken wij bewust één grens: open punten in de beveiliging van onze eigen servers worden alleen in algemene termen beschreven (R13). Wij noemen het risico en de hoogte ervan, maar niet de weg naar een concrete kwetsbaarheid; de details verstrekken wij op verzoek aan een toezichthoudende autoriteit.

2. Rollen: wie draagt de verplichting, en waarvoor

Art. 35 legt de verplichting bij de verwerkingsverantwoordelijke. formexposed is voor sommige verwerkingen verwerkingsverantwoordelijke, voor andere verwerker voor zijn Klanten, en geen van beide voor de gegevens die onze WordPress-plug-in en onze TYPO3-extensie op de website van een Klant opslaan. Het antwoord op bijna elke vraag in dit document hangt af van de rol waarover de vraag gaat. De indeling volgt de Privacyverklaring en de Verwerkersovereenkomst.

VerwerkingRol van formexposedWie de verplichting op grond van Art. 35 draagt
Controle van websites van derden zonder opdracht van hun beheerder: gratis controle, prospectcontrole voor bureaus, onderzoekVerwerkingsverantwoordelijkeformexposed
Controle van domeinen in het klantaccount: monitoring, actieve testverzendingen, browsertrajecten, blootgestelde bestanden, formulierpulsVerwerkingsverantwoordelijke voor de account- en controlegegevens van de Klant; verwerker voor persoonsgegevens van derden die zichtbaar zijn op de geverifieerde website van de Klant; zolang een domein niet geverifieerd is, verwerkingsverantwoordelijke zoals bij de gratis controleformexposed voor zijn eigen deel; de Klant voor gegevens van derden op zijn website
Scan achter de login met een testaccountVerwerker: de inloggegevens en de inhoud achter de login behoren tot de website van de KlantDe Klant; formexposed verleent bijstand
Bezorgingscontrole met controlekopieVerwerkerDe Klant; formexposed verleent bijstand
Zwermbescherming: gedeelde lijst van linkdomeinen uit geblokkeerde spamVerwerkingsverantwoordelijke: wij bundelen de meldingen van vele websites, stellen de lijst samen en verspreiden haarformexposed
Klantaccounts, inloggen, logboeken, support, e-mailverzending, betalingen, bewijsregistratiesVerwerkingsverantwoordelijkeformexposed
Klantportaal en maandrapport aan de abonnees van een bureauVerwerkerHet bureau
Gegevens die de plug-in en de extensie op de website van de Klant opslaan (quarantaine, vangnet, opgeslagen aanvragen)Geen van beide: de gegevens verlaten de website nooitDe beheerder van de website

Hieruit volgt een onderscheid dat wij uitdrukkelijk vermelden, omdat het vaak in beide richtingen verkeerd wordt begrepen. Waar formexposed verwerkingsverantwoordelijke is, voeren wij de beoordeling zelf uit en dragen wij het resultaat ervan. Waar wij verwerker zijn, kunnen wij de beoordeling van de Klant niet in diens plaats uitvoeren, de vraag naar de noodzaak niet voor hem beslissen en de toezichthoudende autoriteit niet namens hem raadplegen op grond van Art. 36. Wat wij daar wel kunnen en moeten doen, is hem alles leveren wat hij nodig heeft: de beschrijving volgens punt (a), de gemeten feiten over de risico's volgens punt (c) en een eerlijke statuslijst van de maatregelen volgens punt (d). Voor de bezorgingscontrole en de scan achter de login is deze pagina precies dat.

Een Klant die de paragrafen over de bezorgingscontrole ongewijzigd overneemt als zijn eigen GEB, heeft er geen uitgevoerd. Of de controlekopie voor zijn formulieren gerechtvaardigd is, of daar bijzondere categorieën van persoonsgegevens te verwachten zijn en hoe hij zijn bezoekers informeert, kan alleen hij beslissen. Paragraaf 11 vat samen wat daarvoor moet worden opgehelderd.

3. Drempelbeoordeling: is een GEB vereist?

3.1 Art. 35(1) en Art. 35(3)

Art. 35(1) vereist een GEB wanneer een soort verwerking, in het bijzonder een verwerking waarbij nieuwe technologieën worden gebruikt, gelet op de aard, de omvang, de context en de doeleinden ervan waarschijnlijk een hoog risico inhoudt voor de rechten en vrijheden van natuurlijke personen. Art. 35(3) noemt drie gevallen waarin dat in het bijzonder zo is. Geen van de drie past op formexposed, en dat moet worden onderbouwd in plaats van gesteld:

  • Punt (a) – een systematische en uitgebreide beoordeling van persoonlijke aspecten van natuurlijke personen, die is gebaseerd op geautomatiseerde verwerking en waarop besluiten worden gebaseerd waaraan voor hen rechtsgevolgen zijn verbonden of die hen op vergelijkbare wijze wezenlijk treffen. Wij beoordelen formulieren en websites, geen persoonlijke aspecten van mensen. De dienst neemt geen besluit met rechtsgevolg voor wie dan ook. Wat daar het dichtst bij komt, is de zwermbescherming: berichten met een link naar een domein op de lijst belanden op de gekoppelde websites in quarantaine. Dat is een geautomatiseerd gevolg voor het bericht, geen uitgebreide beoordeling van een persoon; wij behandelen het onder het criterium “Evaluatie of scoring” in paragraaf 3.3.
  • Punt (b) – verwerking op grote schaal van bijzondere categorieën als bedoeld in Art. 9 of van gegevens met betrekking tot strafrechtelijke veroordelingen en strafbare feiten als bedoeld in Art. 10. Niet beoogd en niet gebouwd. Zulke gegevens kunnen ons toch langs één weg bereiken: in de controlekopie van echte bezoekersberichten bij de bezorgingscontrole. Dat hangt af van het individuele geval en is niet op grote schaal in de zin van deze bepaling; het wordt echter meegewogen in de risicobeoordeling (R1).
  • Punt (c) – stelselmatige en grootschalige monitoring van openbaar toegankelijke ruimten. Hiermee wordt de fysieke observatie van plaatsen bedoeld, niet het opvragen van openbare webpagina's. Deze bepaling aanvoeren als aanknopingspunt voor een websitecrawler zou onjuist zijn.

De juiste route is daarom Art. 35(1) zelf, toegepast via de negen criteria van de richtsnoeren voor gegevensbeschermingseffectbeoordelingen van de Groep gegevensbescherming artikel 29 (WP248 rev.01, bekrachtigd door het Europees Comité voor gegevensbescherming), en de lijst van de Poolse toezichthoudende autoriteit op grond van Art. 35(4) (paragraaf 3.4).

3.2 De negen criteria van de WP248-richtsnoeren

De richtsnoeren noemen negen kenmerken die wijzen op een waarschijnlijk hoog risico. Als vuistregel geldt dat een verwerking die aan twee daarvan voldoet, in de meeste gevallen een GEB vereist. Een verwerkingsverantwoordelijke kan in een individueel geval tot een andere conclusie komen, maar moet die dan onderbouwen en documenteren. Omgekeerd kan één criterium al voldoende zijn. Op deze pagina gebruiken wij de volgende korte aanduidingen:

  1. C1 – Evaluatie of scoring, met inbegrip van profilering en voorspelling, bijvoorbeeld van beroepsprestaties, economische situatie, betrouwbaarheid of gedrag.
  2. C2 – Geautomatiseerde besluitvorming met rechtsgevolg of vergelijkbaar wezenlijk gevolg.
  3. C3 – Stelselmatige monitoring, d.w.z. verwerking die wordt gebruikt om betrokkenen te observeren, te monitoren of te controleren, ook via netwerken. De richtsnoeren rechtvaardigen dit criterium uitdrukkelijk met het feit dat betrokkenen vaak niet weten wie hun gegevens verzamelt en met welk doel.
  4. C4 – Gevoelige gegevens of gegevens van zeer persoonlijke aard: bijzondere categorieën als bedoeld in Art. 9 en 10, maar ook gegevens waarvan de openbaarmaking het dagelijks leven aanzienlijk raakt, waaronder elektronische communicatie waarvan de vertrouwelijkheid moet worden beschermd.
  5. C5 – Op grote schaal verwerkte gegevens, gemeten naar het aantal betrokkenen, de hoeveelheid en het bereik van de gegevens, de duur en de geografische reikwijdte.
  6. C6 – Matching of samenvoeging van datasets die afkomstig zijn uit verschillende verwerkingen of van verschillende verwerkingsverantwoordelijken, op een manier die betrokkenen niet zouden verwachten.
  7. C7 – Gegevens met betrekking tot kwetsbare betrokkenen, bijvoorbeeld werknemers, kinderen, patiënten of andere personen in een ongelijke machtsverhouding.
  8. C8 – Innovatief gebruik of toepassing van nieuwe technologische of organisatorische oplossingen; in de toezichtspraktijk wordt het gebruik van kunstmatige intelligentie regelmatig onder dit criterium geschaard.
  9. C9 – Verwerking die betrokkenen verhindert een recht uit te oefenen of gebruik te maken van een dienst of een overeenkomst.

Wij beoordelen elk criterium als “vervuld”, “grensgeval” of “niet vervuld” en onderbouwen de beoordeling aan de hand van de code. Een grensgeval telt in het totaal niet als vervuld, maar wordt in het resultaat genoemd; waar meerdere grensgevallen in dezelfde richting wijzen, nemen wij de verwerking op in de beoordeling.

3.3 Beoordeling per verwerking

P1 – Gratis controle zonder account (controle van een willekeurige website van derden op verzoek)

Iedereen kan op de startpagina een domein invoeren. De crawler haalt dan maximaal acht openbare pagina's van die website op, leest de formulieren uit, maakt schermafbeeldingen en stelt een rapport op dat iedereen kan zien die de willekeurige link ervan kent. De beheerder van de website komt hier niets van te weten, tenzij hij of zij de identificatie van de crawler in de logboeken opmerkt.

  • C1 – grensgeval. Het rapport beoordeelt de bescherming van een formulier met een niveau (“Blootgesteld”, “Gedeeltelijk beschermd”, “Beschermd”) en een score. Bij een besloten vennootschap betreft dit geen natuurlijke persoon. Bij eenmanszaken en freelancers kan het domein aan de persoon worden toegerekend, en dan zegt het niveau iets over de zorgvuldigheid in diens beroepsuitoefening. Wat wordt beoordeeld, is echter een technische inrichting, niet het gedrag of de eigenschappen van een persoon. Wij behandelen dit als grensgeval.
  • C2 – niet vervuld. Ten aanzien van de beheerder wordt niets besloten. Voor de persoon die de controle aanvraagt, gelden limieten per IP-adres en sessie (cfg/check_lib.php); een geweigerde controle heeft geen wezenlijk gevolg.
  • C3 – niet vervuld. Het gaat om een eenmalige opvraging op verzoek, maximaal eenmaal per domein en week (cfg/check_lib.php, instelling fc_domain_days = 7). Er worden geen mensen geobserveerd. De omstandigheid waarmee de richtsnoeren C3 rechtvaardigen – de betrokkenen weten niets van de verwerking – is echter aanwezig. Zij wordt meegewogen in de risicobeoordeling (R5).
  • C4 – niet vervuld. Opgeslagen worden de formulierstructuur en bevindingen, geen ingevoerde waarden (scanner/src/crawl.js slaat bij zichtbare velden alleen de lengte van een waarde op). De scanner leest het begin van vooraf ingevulde verborgen velden (tot 24 tekens) en data-attributen (tot 60 tekens) alleen tijdens de controle, om tokens en tijdstempels te herkennen; ze worden niet opgeslagen. Schermafbeeldingen kunnen incidenteel mensen en namen tonen; de website van een medische praktijk toont het specialisme in beeld. Dat zijn openbare beroepsgegevens, geen gezondheidsgegevens van een bepaalde persoon.
  • C5 – grensgeval. De daglimiet is 200 geaccepteerde controles (fc_daily_cap), rekenkundig dus tot ongeveer 73.000 websites per jaar. Per website ontstaan slechts weinig persoonsgegevens, en de duur is kort (30 dagen). Gemeten op het ontwikkelsysteem staan er 2 anonieme controles in de dataset. Vandaag niet vervuld; grensgeval gezien de ontworpen capaciteit.
  • C6 – niet vervuld. Naast het ophalen van de pagina's vraagt de dienst de leeftijd van het domein op via de RDAP-dienst rdap.org (alleen de domeinnaam wordt doorgegeven; alleen de registratiedatum wordt opgeslagen, in de cache) en voert DNS-resolutie uit. Dat zijn technische gegevens over het domein, geen samenvoeging van datasets over mensen.
  • C7 – niet vervuld.
  • C8 – vervuld, in zwakke vorm. Een geautomatiseerde browser controleert de pagina's, en een taalmodel op onze eigen server classificeert formulieren die de regels niet herkennen (scanner/src/classify.js). Het model ziet de paginatitel, het adres, de veldlabels en tot 400 tekens formuliertekst. Het kan een formulier nooit “verzendbaar” maken.
  • C9 – niet vervuld.

Tussenresultaat P1: één criterium in zwakke vorm (C8), twee grensgevallen (C1, C5). Geen verplichting volgens de vuistregel. Omdat beide grensgevallen in dezelfde richting wijzen en de betrokkenen niets van de verwerking weten, nemen wij P1 op in de beoordeling.

P2 – Prospectcontrole voor bureaus

Een bureau met het Business-abonnement en een ingerichte eigen huisstijl kan de website van een prospect passief laten controleren. Het ontvangt een korte bevinding onder zijn huisstijl en een gedetailleerd rapport, en geeft de link zelf door (cfg/akquise_lib.php). Wij nemen met niemand contact op.

  • C1 – grensgeval, sterker dan bij P1. De korte bevinding is uitdrukkelijk bedoeld als “opening voor het eerste gesprek”. De beoordeling van de website wordt zo de basis om een persoon commercieel te benaderen.
  • C5 – niet vervuld. Maximaal 30 controles per bureau en maand (prospect_monthly), verwijderd na 90 dagen.
  • C8 – vervuld, in zwakke vorm (dezelfde technologie als bij P1).
  • Overige criteria – niet vervuld. De bevinding wordt met de huisstijl van het bureau gepresenteerd, maar niet gekoppeld aan andere gegevens over de beheerder.

Tussenresultaat P2: geen verplichting volgens de vuistregel; opgenomen om dezelfde redenen als P1 en omdat het doel – klantenwerving – een eigen risico meebrengt (R6).

P3 – Onderzoek “Form Security Index”

Voor een onderzoek wordt een lijst websites passief gecontroleerd, afgeremd tot maximaal vijf openstaande taken per run van het statusproces, dat elke vijf minuten draait (cfg/studie_lib.php). Alleen totalen worden gepubliceerd, en segmenten pas vanaf 20 websites met een formulier (study_min_segment, cfg/studie_lib.php). De ruwe gegevens worden bij publicatie verwijderd (cfg/studie_lib.php).

  • C5 – grensgeval, vervuld bij grote lijsten. De omvang van de lijst is in de code niet begrensd; de afremming maakt rekenkundig meer dan duizend controles per dag mogelijk. Een onderzoek van een nationale markt omvat duizenden websites, waarvan vele door eenmanszaken worden beheerd. Vanaf zo'n omvang beschouwen wij het criterium als vervuld.
  • C8 – vervuld, in zwakke vorm.
  • C1 – niet vervuld. Hoewel de afzonderlijke website wordt beoordeeld, wordt alleen het totaal gepubliceerd; de beoordeling dient niet om een uitspraak over de afzonderlijke beheerder te doen.
  • Overige criteria – niet vervuld.

Tussenresultaat P3: voor onderzoeken van de ontworpen omvang twee criteria (C5, C8). Het onderzoek bereikt daarmee de drempel; formexposed voert de beoordeling uit als verwerkingsverantwoordelijke. Gemeten op het ontwikkelsysteem is er tot nu toe geen onderzoek aangemaakt.

P4 – Controle van domeinen in het klantaccount

De Klant laat de domeinen in zijn account regelmatig controleren. Zodra hij heeft aangetoond dat hij zeggenschap over het domein heeft, komen daar actieve testverzendingen (maximaal vijf per controle), het zoeken naar blootgestelde bestanden en ingestelde browsertrajecten bij.

  • C3 – niet vervuld. De controle is gepland en terugkerend, maar betreft de eigen website van de Klant en wordt op diens verzoek uitgevoerd, niet om mensen te observeren.
  • C4 – grensgeval, nee. Het zoeken naar blootgestelde bestanden leest maximaal de eerste 8 KB van paden zoals /backup.sql of een debuglogboek, om aan de inhoud te zien of het bestand werkelijk blootgesteld is (cfg/dateien_lib.php). Zo'n fragment kan formulierinvoer van bezoekers bevatten. Het wordt alleen in het geheugen gecontroleerd en nooit opgeslagen; opgeslagen worden het pad, het type en de ernst.
  • C8 – vervuld, in zwakke vorm.
  • Overige criteria – niet vervuld.

Tussenresultaat P4: geen verplichting. Opgenomen omdat de actieve testverzendingen en de bestandscontrole afhangen van een bewijs dat nooit wordt vernieuwd (R7).

P5 – Scan achter de login

Voor een geverifieerd domein kan de Klant een testaccount voor zijn website opslaan. De scanner logt daarmee in en leest de formulieren op maximaal vijf opgegeven pagina's van het ledengedeelte (cfg/login_lib.php, scanner/src/login.js).

  • C4 – grensgeval. Inloggegevens zijn geen gegevens van zeer persoonlijke aard in de zin van de richtsnoeren, maar misbruik ervan opent het ledengedeelte. Afhankelijk van de website kan achter een login vertrouwelijke inhoud staan, bijvoorbeeld in een leden- of patiëntenportaal. Dat hangt af van de Klant, niet van ons.
  • C8 – niet vervuld. Geautomatiseerde aanmeldingen zijn gebruikelijk bij monitoringdiensten.
  • Overige criteria – niet vervuld.

Tussenresultaat P5: geen verplichting volgens de vuistregel. Voor Klanten van wie het ledengedeelte vertrouwelijke inhoud toont, kan dat veranderen; de beslissing ligt dan bij hen. Opgenomen vanwege de beveiligingsrisico's (R8).

P6 – Bezorgingscontrole met controlekopie

De Klant voert in de mailinstellingen van zijn formulier een controleadres van formexposed in als blinde kopie. Daardoor gaat elke formulier-e-mail ook naar onze controlemailbox – zowel ons testbericht als elk echt bericht van een bezoeker. Een geautomatiseerde ophaling leest de headers en de eerste 8 KB, wijst de e-mail toe, evalueert SPF, DKIM en DMARC en verwijdert haar (cfg/zustellung_lib.php).

  • C4 – vervuld. Wat bezoekers in een contactformulier schrijven, is elektronische communicatie aan een onderneming met willekeurige inhoud. Op de website van een medische praktijk, een advocatenkantoor, een hulpverleningsinstantie of een school zijn gegevens in de zin van Art. 9 of over kinderen te verwachten. De richtsnoeren noemen vertrouwelijke elektronische communicatie uitdrukkelijk onder dit criterium.
  • C3 – grensgeval, eerder vervuld. Elk bericht wordt volgens plan en doorlopend gekopieerd en automatisch geëvalueerd, zonder dat de afzender het merkt. Het doel is de mailroute te controleren, niet mensen te observeren. De omstandigheid waarmee de richtsnoeren het criterium rechtvaardigen – betrokkenen weten niet wie hun gegevens ontvangt – is echter volledig aanwezig zolang de Klant zijn bezoekers niet informeert.
  • C7 – afhankelijk van de Klant. Patiënten, cliënten van advocatenkantoren, sollicitanten, ouders en leerlingen staan vaak in een afhankelijkheidsrelatie tot de ontvanger van hun bericht.
  • C5 – grensgeval, nee. Niet op grote schaal voor de individuele Klant. Bij formexposed komen de kopieën van vele Klanten in één mailbox samen; dat vergroot het gewicht van een inbreuk, niet het aantal per verwerkingsverantwoordelijke.
  • Overige criteria – niet vervuld. De toewijzing aan domein en test is geen matching van datasets over mensen; de technologie is niet nieuw.

Tussenresultaat P6: C4 vervuld, C3 grensgeval en eerder vervuld, C7 vervuld bij veel typische Klanten. In de typische constellatie zijn dus twee of meer criteria vervuld. Een GEB is vereist – als verplichting van de Klant, die de verwerkingsverantwoordelijke is. De paragrafen 6 tot en met 11 leveren hem daarvoor de feiten.

P7 – Zwermbescherming

Gekoppelde WordPress-websites melden eenmaal per dag de domeinen van links uit berichten die hun beschermingslaag heeft tegengehouden. Een domein dat binnen zeven dagen op ten minste drie verschillende websites met ten minste vijf treffers voorkomt, komt op een gedeelde lijst; de lijst wordt teruggestuurd naar alle gekoppelde websites, die berichten met links naar dat domein vervolgens in quarantaine plaatsen (cfg/swarm_lib.php).

  • C6 – vervuld. Meldingen van vele onderling onafhankelijke websites, d.w.z. van verschillende verwerkingsverantwoordelijken, worden samengevoegd en als gedeelde lijst aan hen allemaal teruggegeven.
  • C1 – vervuld, voor zover een domein aan een natuurlijke persoon kan worden toegerekend. De lijst is een classificatie als spambron. De richtsnoeren noemen het screenen aan de hand van een gedeelde fraudedatabase als voorbeeld van dit criterium. De meeste domeinen op zo'n lijst behoren toe aan ondernemingen of zijn wegwerpdomeinen; het domein van een individu kan er echter op belanden, terecht of door opzettelijk geplaatste valse meldingen.
  • C9 – grensgeval. Een bericht met een link op de lijst bereikt de ontvanger niet onmiddellijk, maar blijft in diens quarantaine staan tot hij of zij het vrijgeeft. Het gaat niet verloren.
  • C2 – niet vervuld. De quarantaine is een geautomatiseerd gevolg voor een bericht, zonder rechtsgevolg en met menselijke vrijgave door de ontvanger.
  • Overige criteria – niet vervuld. IP-netwerken zijn uitgeschakeld (swarm_ip_enabled = 0, cfg/swarm_lib.php).

Tussenresultaat P7: twee criteria (C6, C1) en één grensgeval (C9). De drempel is bereikt; formexposed voert de beoordeling uit als verwerkingsverantwoordelijke. Met ingeschakelde IP-netwerken zouden C1 en C6 zonder beperking vervuld zijn; het inschakelen ervan vereist een nieuwe versie van deze beoordeling (paragraaf 12). Gemeten op het ontwikkelsysteem zijn er noch meldingen noch vermeldingen op de lijst.

P8 – Klantaccounts, inloggen, logboeken, support, e-mail, betalingen

  • C1 en C9 – niet vervuld. Opvallend gedrag bij de gratis controle leidt tot een notitie met het IP-adres (cfg/check_lib.php) en eventueel tot weigering van verdere controles. Dat is misbruikpreventie met weinig gevolg, geen beoordeling van persoonlijke aspecten.
  • Overige criteria – niet vervuld. Het gaat om de gebruikelijke gegevens van een dienst voor ondernemingen.

Tussenresultaat P8: geen GEB vereist. De verwerkingen worden beschreven in het Register van verwerkingsactiviteiten.

P9 – Plug-incijfers, veldfouten, recorder, badge, klantportaal, “Fix it for me”

  • De plug-in en de extensie geven dagcijfers, de plug-ininventaris en foutcategorieën door, en de WordPress-plug-in geeft daarnaast linkdomeinen voor de zwermbescherming door (standaard aan) (P7), geen inhoud, adressen, namen of IP-adressen van bezoekers; de recorder bewaart selectors maximaal 15 minuten in de browser van de beheerder. Geen criteria vervuld.
  • Bij het laden zet de badge de gebruikelijke verbindingsgegevens in het logboek van de webserver, zonder cookie. Geen criteria vervuld.
  • Het klantportaal verwerkt e-mailadressen van abonnees met dubbele opt-in in opdracht van het bureau. Geen criteria vervuld.
  • “Fix it for me” laat geplakte formuliercode herschrijven door een taalmodel op onze eigen server; de code wordt niet opgeslagen. C8 in zwakke vorm, verder niets.

Tussenresultaat P9: geen GEB vereist.

3.4 De lijst van de Poolse toezichthoudende autoriteit op grond van Art. 35(4)

De bevoegde autoriteit is de President van het Bureau voor de bescherming van persoonsgegevens (Prezes Urzędu Ochrony Danych Osobowych, UODO). De President heeft de lijst van soorten verwerkingen waarvoor een GEB vereist is, gepubliceerd in de mededeling van 17 juni 2019 (Komunikat Prezesa Urzędu Ochrony Danych Osobowych z dnia 17 czerwca 2019 r. w sprawie wykazu rodzajów operacji przetwarzania danych osobowych wymagających oceny skutków przetwarzania dla ich ochrony, Monitor Polski 2019, poz. 666). De lijst koppelt haar vermeldingen aan de criteria van de WP248-richtsnoeren, geeft voorbeelden en is uitdrukkelijk niet uitputtend; zij vervangt de beoordeling op grond van Art. 35(1) niet.

In onze lezing komen de volgende soorten verwerking op de lijst inhoudelijk overeen met verwerkingen van formexposed:

Soort verwerking volgens de lijst (geparafraseerd)Gekoppeld criteriumVerwerking bij formexposedBeoordeling
Vergelijking, evaluatie of afleiding op basis van de analyse van gegevens uit verschillende bronnenC6P7 Zwermbeschermingvan toepassing
Evaluatie of scoring, met inbegrip van profileringC1P7 Zwermbescherming; P1 en P2 als grensgevallenvan toepassing op P7
Verwerking van bijzondere categorieën van persoonsgegevensC4P6 Bezorgingscontrolevan toepassing afhankelijk van de Klant
Innovatief gebruik of toepassing van technologische oplossingenC8P1 tot en met P4 (taalmodel voor classificatie)van toepassing in zwakke vorm
Verwerking op grote schaalC5P3 Onderzoekvan toepassing bij grote lijsten
Stelselmatige monitoring van openbaar toegankelijke plaatsen, ook met herkenning van kenmerkenC3–niet van toepassing: bedoeld zijn plaatsen, geen websites

Deze indeling is een lezing, geen citaat; de bewoording van de vermeldingen moet bij de juridische toetsing daaraan worden getoetst. Zij bevestigt het resultaat van paragraaf 3.3, maar verandert het niet. Voor zover ons bekend heeft UODO geen lijst op grond van Art. 35(5) gepubliceerd – verwerkingen waarvoor geen GEB vereist is.

3.5 Resultaat van de drempelbeoordeling

VerwerkingVervuldGrensgevalResultaat
P1 Gratis controleC8 (zwak)C1, C5niet verplicht; opgenomen
P2 ProspectcontroleC8 (zwak)C1niet verplicht; opgenomen
P3 OnderzoekC8 (zwak), C5 bij grote lijsten–vereist (verplichting van formexposed)
P4 Controle van klantdomeinenC8 (zwak)C4 (bestandscontrole)niet verplicht; opgenomen
P5 Scan achter de login–C4niet verplicht; opgenomen; voor de Klant afhankelijk van de inhoud
P6 BezorgingscontroleC4; C7 afhankelijk van de KlantC3 (eerder vervuld), C5vereist (verplichting van de Klant; deze pagina verleent bijstand op grond van Art. 28(3)(f))
P7 ZwermbeschermingC6, C1C9vereist (verplichting van formexposed)
P8 Accounts, logboeken, support, betalingen––niet vereist
P9 Plug-incijfers, badge, portaal, “Fix it for me”C8 (zwak, alleen “Fix it for me”)–niet vereist

Resultaat ten aanzien van Art. 35(1): Voor afzonderlijke verwerkingen van formexposed is een GEB vereist. Zij is vereist voor de zwermbescherming en voor onderzoeken van de ontworpen omvang, en formexposed voert haar uit als verwerkingsverantwoordelijke. Voor de bezorgingscontrole is zij in de typische constellatie vereist, maar als verplichting van de Klant; formexposed levert de basis. Voor de overige controles van websites van derden en eigen websites is zij niet verplicht. Wij nemen ze toch op, omdat ze dezelfde technologie gebruiken, omdat meerdere grensgevallen in dezelfde richting wijzen en omdat de betrokkenen – beheerders zonder account en mensen op gecontroleerde pagina's – niets van de verwerking weten. Voor accounts, logboeken, support en betalingen is geen beoordeling vereist.

De paragrafen 6 tot en met 10 gelden daarom voor P1 tot en met P7. Waar een uitspraak slechts voor één van deze verwerkingen geldt, is dat aangegeven.

4. Functionaris voor gegevensbescherming: de beoordeling op grond van Art. 37

Er is geen functionaris voor gegevensbescherming aangewezen. Art. 37(1) bindt de verwerkingsverantwoordelijke en de verwerker in gelijke mate; de vraag is dus onze eigen. De drie wettelijke gevallen:

Art. 37(1)VoorwaardeResultaat
punt (a)Overheidsinstantie of overheidsorgaanNiet van toepassing; LW IT Solutions Company Lukas Wójcik is een particuliere eenmanszaak.
punt (b)De kernactiviteiten bestaan uit verwerkingen die regelmatige en stelselmatige observatie op grote schaal van betrokkenen vereisenDe kernactiviteit is het regelmatig en stelselmatig controleren en monitoren van websites en formulieren. Er worden echter geen mensen gemonitord: de crawler observeert geen gedrag, en de bezorgingscontrole evalueert e-mails alleen op bezorging en echtheid. Niet vervuld.
punt (c)De kernactiviteiten bestaan uit verwerking op grote schaal van gegevens als bedoeld in Art. 9 of 10Niet door het ontwerp. Bijzondere categorieën kunnen ons via de controlekopie van de bezorgingscontrole bereiken; dat is incidenteel, geen kernactiviteit. Niet vervuld.

Naar ons oordeel bestaat er daarom geen verplichting om er een aan te wijzen. Of het Poolse recht op grond van Art. 37(4) daarnaast een aanwijzing vereist, is een open vraag voor de juridische toetsing. Aangezien er geen functionaris voor gegevensbescherming is aangewezen, is het advies op grond van Art. 35(2) niet van toepassing. Als de juridische toetsing uitwijst dat er een verplichting tot aanwijzing bestaat, wordt het advies van de dan aangewezen functionaris voor gegevensbescherming ingewonnen voordat deze beoordeling wordt goedgekeurd (paragraaf 12). Aanspreekpunt voor vragen over deze beoordeling is de eigenaar via contact@lukaswojcik.com.

5. Methode, bronnen en grenzen van deze versie

De feiten in dit document komen uit de broncode van de applicatie en de scanner, uit het databaseschema en uit rijtellingen en instellingen van het ontwikkelsysteem, gemeten op 11 oktober 2026. De database en de servers zijn alleen-lezend benaderd. Waar een meting in strijd is met een voornemen – ook met een uitspraak in onze eigen juridische documenten – rapporteren wij de meting. Wij passen geen goedgekeurde gedragscodes op grond van Art. 40 toe, waarvan de naleving op grond van Art. 35(8) in aanmerking zou moeten worden genomen.

  • Het ontwikkelsysteem is gemeten. De dienst is nog niet gelanceerd. De cijfers zijn daarom klein en deels artefacten van het testen: 112 controles, waarvan 110 zonder klantdomein; 432 schermafbeeldingen; 2 domeinen, waarvan 1 geverifieerd; geen bezorgingscontrole ingeschakeld; geen testaccount opgeslagen voor de scan achter de login; geen onderzoek; geen meldingen in de zwermbescherming. Metingen moeten vóór de lancering en daarna met regelmatige tussenpozen worden herhaald.
  • Niet gemeten in deze versie en vóór goedkeuring aan te vullen zijn: de configuratie van het productiesysteem, met inbegrip van de vraag of en hoe de controlemailbox daar is ingericht en of het sleutelpaar voor de scan achter de login daar is ingericht; of de taalmodelsoftware aanvragen logt; de stand van het serverbeheer (R13); de overeenkomst met de e-maildienstverlener.
  • Niet kon worden gemeten hoeveel echte bezoekersberichten door de controlekopie zullen gaan en uit welke sectoren Klanten zullen komen. Beide bepalen het gewicht van R1 en R2 en moeten na de lancering worden vastgesteld.
  • De bronvermeldingen verwijzen naar bestanden en functies in de broncode van het ontwikkelsysteem. Doorslaggevend is de beschreven functie, niet de plaats ervan in het bestand.

Dit document is een concept. Het is nog niet goedgekeurd door de verwerkingsverantwoordelijke (paragraaf 12), en twee van de conclusies – de beoordeling van de omvang bij P1 en P3 en het gewicht van de bezorgingscontrole – hangen af van cijfers die pas na de lancering zullen bestaan.

6. (a) Systematische beschrijving van de verwerkingen en doeleinden

6.1 Hoe het controlesysteem is opgebouwd

formexposed draait op eigen servers in Polen, zonder externe hostingprovider: een webserver met de applicatie en de database, en een scanserver met de controledienst en een lokaal taalmodel, beide in hetzelfde interne netwerk. Een controle verloopt als volgt:

  1. De applicatie maakt een taak aan in de database – met inachtneming van de limieten en blokkeringen uit paragraaf 6.3.
  2. De controledienst op de scanserver haalt de taak op, controleert de blocklist, de hostnamen en, bij anonieme controles, de leeftijd van het domein nog een keer, en start een geïsoleerde container voor precies deze taak: een eigen netwerk met eigen filterregels, geen bijzondere rechten, een alleen-lezen bestandssysteem, geheugen- en proceslimieten en een tijdslimiet (scanner/src/worker.js).
  3. In de container haalt een geautomatiseerde browser maximaal acht openbare pagina's op, eerst de startpagina, daarna bij voorkeur contact-, colofon- en supportpagina's. Vooraf leest hij robots.txt; een uitsluiting voor FormExposedBot of voor alle crawlers die de startpagina omvat, beëindigt de controle, net als een onbereikbare robots.txt of een serverfout bij het ophalen (scanner/src/net.js). Verboden voor afzonderlijke subpaden worden niet afzonderlijk in acht genomen. Formulierpuls, het ophalen van bewijs, de headertool en het zoeken naar blootgestelde bestanden lezen robots.txt niet. Naast de acht pagina's zijn er tot drie pagina's met een klik op “Weigeren” in de cookiebanner, tot drie pagina's in telefoonweergave, actieve tests voor geverifieerde domeinen en tot vijf pagina's achter een login; de pagina's worden na elkaar geladen, niet parallel. Elke aanvraag van de browser – ook omleidingen en ingesloten inhoud – gaat door een filter dat privénetwerken en andere poorten weigert.
  4. De container schrijft een resultaat en de schermafbeeldingen naar een tijdelijke directory. De controledienst geeft het resultaat en de afbeeldingen via het interne netwerk door aan de applicatie en verwijdert de tijdelijke directory, ook na een fout (scanner/src/worker.js).
  5. De applicatie verwerkt het resultaat, vergelijkt het bij domeinen van Klanten met de vorige controle en meldt wijzigingen aan de door de Klant ingestelde bestemmingen.

6.2 Wat de crawler opslaat – en wat niet

OnderdeelWat wordt opgeslagenWat niet wordt opgeslagenBronvermelding
Pagina'sAdres, HTTP-status, headers, Content Security Policy, opgevraagde hosts van derden (maximaal 120)Pagina-inhoud als tekst of HTMLscanner/src/crawl.js
FormulierveldenType, naam, label, placeholder, verplicht veld, zichtbaarheid, lengte van een aanwezige waardeVeldwaarden; bij verborgen velden worden de eerste 24 tekens van de waarde alleen tijdens de controle gelezen (om tokens te herkennen)scanner/src/crawl.js
Ontvangersadressen in het formulieralleen het domeinhet adresscanner/src/crawl.js
ScriptsInventaris met controlesom; adressen en begintekst zonder accountidentificaties van advertentie- en analysedienstenAccount- en pixelidentificatiesscanner/src/crawl.js
Meelezerswelke advertentiepixels en opnametools laden vóór en na een klik op “Weigeren” in de cookiebanner, en of zij invoer maskerenIdentificaties van de accounts bij deze dienstenscanner/src/mitleser.js, scanner/src/einwilligung.js
Formulierteksttot 400 tekens gaan naar het lokale taalmodel als de regels het type niet herkennenVerstrekking aan derden; opslag van de tekstscanner/src/classify.js
Schermafbeeldingen (crawler)zichtbaar gedeelte van de eerste pagina; voor elk zichtbaar formulier een afbeelding van het formulierelement–scanner/src/crawl.js
Schermafbeeldingen (actieve controle)Afbeelding van de antwoordpagina op de testverzending; daarnaast de status, het doeladres, de titel en de eerste 300 tekens van de tekst ervan–scanner/src/active.js
Schermafbeeldingen (browsertrajecten)Afbeelding van het formulier met zwart gemaakte invoervelden, gecomprimeerd, maximaal 32 KBInvoerscanner/src/browser.js
Achter de loginzoals bij formuliervelden hierbovenSchermafbeeldingen, cookies, linksscanner/src/login.js

Persoonsgegevens zitten niet door het ontwerp in deze onderdelen, maar wel incidenteel: de naam van een contactpersoon naast het formulier, een teamfoto op de startpagina, een telefoonnummer in een label, het e-maildomein van een individu, een naam in een placeholder. Achter de login komen daar gegevens van het testaccount en, afhankelijk van de website, van andere gebruikers bij.

6.3 Wie een controle start, en wat dan geldt

AanleidingVertrouwensniveau in de taakTestverzendingenResultaat toegankelijk viaVerwijdering
Iemand voert op de startpagina een domein in (gratis controle)anoniemneeRapport onder een willekeurige link30 dagen, inclusief afbeeldingen (cfg/check_lib.php)
Plug-in of extensie zonder accountplug-inneeRapport onder een willekeurige link30 dagen
Bureau voor een prospectgeregistreerdneeKorte bevinding en rapport onder een willekeurige link90 dagen (cfg/akquise_lib.php)
Klant, domein zonder bewijsgeregistreerdneeAccount; rapport onder een willekeurige link13 maanden, de laatste controle blijft bewaard
Klant, domein met bewijsgeverifieerdja, maximaal vijf per controleAccount; rapport onder een willekeurige link13 maanden, de laatste controle blijft bewaard (cfg/fristen_lib.php)
Onderzoekinternneealleen totalen na publicatiebij publicatie; zonder publicatie geen termijn (R4)
Interne controle via de opdrachtregel door de aanbiederintern; voor onze eigen test- en demodomeinen ook “geverifieerd”nee; met het niveau “geverifieerd” ja (alleen onze eigen test- en demodomeinen)alleen interngeen termijn (R4)

Vóór de gratis controle staan meerdere lagen (cfg/check_lib.php): een noodstop; reCAPTCHA; hetzelfde domein maximaal eenmaal per zeven dagen (daarna wordt het bestaande rapport getoond); limieten per IP-adres, per sessie (als hashwaarde, nooit de sessie-identificatiecode zelf) en voor de hele dienst per dag; de blocklist uit opt-out en robots.txt; de controle of het domein naar openbare adressen verwijst; en een blokkering voor zeer nieuwe of onbekende domeinen. Afwijkingen – veel verschillende domeinen vanaf één IP-adres, veel aanvragen in korte tijd – worden met het IP-adres genoteerd en leiden tot een signaal zonder inhoud (cfg/check_lib.php).

6.4 Controle van domeinen in het klantaccount

De Klant toont aan dat hij zeggenschap over een domein heeft: via een DNS-record, een metatag, een bestand of via onze plug-in (cfg/verify_lib.php). Pas dan wordt het domein als geverifieerd behandeld. De monitoringplanner plant regelmatige controles alleen voor actieve, gemonitorde en geverifieerde domeinen (cfg/monitor_lib.php).

  • Actieve testverzendingen zijn aan twee poorten gebonden: de applicatie zet de actieve modus voor Klanten alleen aan bij geverifieerde domeinen (voor onze eigen test- en demodomeinen kan de aanbieder via een interne opdrachtregeltool een controle met het niveau “geverifieerd” aanmaken), en de controledienst controleert het vertrouwensniveau en de noodstop fc_active_enabled opnieuw (scanner/src/worker.js). Alleen een formulier kan worden verzonden dat de regels met grote zekerheid als algemeen contactformulier herkennen, dat geen verplichte velden voor echte persoonsgegevens heeft en waarvan het domein niet lijkt op dat van een overheidsinstantie, onderwijsinstelling, kliniek, medische praktijk, politie of rechtbank (scanner/src/classify.js). Het taalmodel kan een formulier niet verzendbaar maken (scanner/src/classify.js). Per controle gaan maximaal vijf verzendingen uit (fc_active_max_posts), duidelijk gemarkeerd, met de afzender dummy@formexposed.com, een adres onder .invalid om de e-mailvalidatie te testen en een onschuldige extra headerregel om header-injectie te herkennen (scanner/src/active.js).
  • Browsertrajecten controleren ingestelde formuliertrajecten in een browser tot vlak vóór de verzending. Alleen GET- en HEAD-aanvragen zijn toegestaan; al het andere wordt afgebroken, net als adressen met woorden voor afmelden, verwijderen, kopen of betalen (scanner/src/browser.js). Voor de controle worden verplichte velden gevuld met verzonnen waarden die de browser nooit verlaten.
  • Blootgestelde bestanden worden wekelijks gezocht, alleen bij geverifieerde domeinen, met maximaal één opvraging per pad, maximaal 8 KB, en de inhoud wordt nooit opgeslagen (cfg/dateien_lib.php).
  • Een onafhankelijke tweede probe is voorbereid en standaard uitgeschakeld (browser_probe_enabled = 0). Indien ingeschakeld, zou zij alleen het domein, het adres, de selector, de stappen en de browserkeuze ontvangen, nooit inloggegevens, schermafbeeldingen of bezoekersgegevens (cfg/formular_probe_lib.php).

6.5 Scan achter de login

Voorwaarden: de functie is ingericht, het domein is geverifieerd, en de Klant heeft een betaald abonnement en is eigenaar of beheerder van de werkruimte (cfg/login_lib.php); hij bevestigt dat het account een testaccount met zo weinig mogelijk rechten is (cfg/login_lib.php).

  1. Gebruikersnaam en wachtwoord worden op de webserver onmiddellijk versleuteld met de openbare sleutel van de scanserver: een eenmalige sleutel per record (X25519), sleutelafleiding (HKDF-SHA256), AES-256-GCM, gebonden aan het domein (cfg/login_lib.php). Alleen de controledienst op de scanserver heeft de privésleutel (scanner/src/geheim.js). Wie de webserver, de database of een back-up in handen heeft, heeft alleen versleutelde tekst.
  2. De interface toont alleen het eerste teken en de lengte van de gebruikersnaam (cfg/login_lib.php). Inloggegevens worden nooit weergegeven, nooit gelogd en nooit via de API uitgegeven.
  3. Voor een controle voegt de applicatie de versleutelde tekst aan de taak toe. De controledienst ontsleutelt die, wist het veld in de taak onmiddellijk en geeft de inloggegevens alleen via de standaardinvoer aan de container door, nooit als opdrachtregelargumenten (scanner/src/worker.js). Restanten in afgebroken taken worden na één uur door het statusproces gewist (cfg/login_lib.php).
  4. In de container logt de browser in. Hij breekt af als de inlogpagina naar een andere host omleidt, als het inlogformulier een CAPTCHA bevat (wij omzeilen geen CAPTCHA's) of als na de verzending nog een wachtwoordveld zichtbaar is (scanner/src/login.js). Daarna wist hij het wachtwoordveld in het geheugen van de pagina en vergeet hij de inloggegevens (scanner/src/login.js).
  5. Hij leest maximaal vijf door de Klant opgegeven pagina's van hetzelfde domein. Adressen met woorden voor afmelden, verwijderen, wissen of opzeggen worden geblokkeerd (scanner/src/login.js). Achter de login wordt niets verzonden, worden geen schermafbeeldingen gemaakt, en cookies en links komen niet in het resultaat terecht (scanner/src/login.js).
  6. Verwijdering is definitief: de versleutelde tekst wordt overschreven met willekeurige gegevens van dezelfde lengte, de regel wordt verwijderd en openstaande taken worden opgeschoond (cfg/login_lib.php). Wanneer het domein wordt verwijderd, verdwijnt de regel automatisch via een vreemde sleutel.

6.6 Bezorgingscontrole

De bezorgingscontrole beantwoordt de vraag of een e-mail uit het contactformulier werkelijk aankomt, en evalueert de echtheidskenmerken ervan. Zij is optioneel, standaard uitgeschakeld en vereist een ingerichte controlemailbox (cfg/zustellung_lib.php).

  1. Als de Klant haar inschakelt, krijgt het domein een willekeurig label. De Klant voert het controleadres met dit label als blinde kopie in zijn formulier in.
  2. Vanaf dan gaat elke formulier-e-mail ook naar de controlemailbox: onze gemarkeerde testverzendingen en alle echte berichten van bezoekers. De e-mails gaan rechtstreeks naar de mailbox bij Namecheap, Inc. (Private Email), Phoenix, Arizona, USA – zij komen alleen aan als de MX-records van ons domein daarnaar verwijzen; via doorsturing, bijvoorbeeld bij de domeinregistrar Namecheap, Inc., bereiken zij de mailbox niet – en blijven daar tot ze worden opgehaald.
  3. Het statusproces haalt de mailbox elke vijf minuten op (srv/cron_status.php). Per e-mail leest het de headers en maximaal de eerste 8 KB van de tekst, zonder ze als gelezen te markeren (cfg/zustellung_lib.php).
  4. Uit de headers bepaalt het het label en daarmee het domein, en uit de tekst eventueel de identificatiecode van onze test (cfg/zustellung_lib.php). Opgeslagen worden het tijdstip, het domein en eventueel de test-identificatiecode (cfg/zustellung_lib.php), gedurende 180 dagen (cfg/zustellung_lib.php).
  5. Uit de headers evalueert het SPF, DKIM en DMARC en slaat het resultaat op bij het domein: de controleresultaten, het domein van het afzenderadres, de domeinen van de handtekeningen en het adres van de verzendende mailserver (cfg/zustellung_lib.php). Als het resultaat verslechtert, gaat er eenmalig een melding naar de Klant die het afzenderdomein kan noemen (cfg/zustellung_lib.php).
  6. Daarna markeert het elke opgehaalde e-mail voor verwijdering, ook een e-mail die aan geen enkel domein kon worden toegewezen, en verwijdert die aan het einde van de run uit de mailbox (cfg/zustellung_lib.php). Als de run vóór dat moment afbreekt, blijven de e-mails staan tot de volgende geslaagde run.
  7. Alleen de kopie van precies de betreffende test geldt als bewijs van bezorging (cfg/zustellung_lib.php). Als die niet binnen drie uur aankomt (delivery_wait_h), meldt de dienst “Bezorging ontbreekt”.

De tekst van echte berichten wordt nooit naar de database geschreven, en het adres van de bezoeker evenmin. Beide worden echter wel gelezen: de ophaling laadt de eerste 8 KB van elke e-mail in het geheugen om naar de test-identificatiecode te zoeken.

6.7 Zwermbescherming

  1. De beschermingslaag van de WordPress-plug-in houdt een bericht tegen als spam en telt de domeinen van de links erin. Eenmaal per dag meldt de plug-in ons deze domeinen met hun aantal treffers, maximaal 60 per dag; geen adressen, geen tekst, geen IP-adressen (cfg/swarm_lib.php).
  2. Eenmaal per dag stellen wij daaruit de lijst samen: een domein komt erop als het binnen zeven dagen door ten minste drie verschillende websites en met ten minste vijf treffers is gemeld (swarm_min_sites, swarm_window_days, cfg/swarm_lib.php). Grote diensten uit een vaste uitzonderingslijst en de domeinen van onze Klanten, telkens inclusief subdomeinen, komen nooit op de lijst (cfg/swarm_lib.php).
  3. De lijst gaat met het antwoord op de dagelijkse melding naar alle gekoppelde websites. Hun beschermingslaag plaatst berichten met links naar domeinen op de lijst in quarantaine, niet in de prullenbak.
  4. Wat niet meer in de nieuwe lijst voorkomt, valt eraf; meldingen worden na 30 dagen verwijderd (cfg/swarm_lib.php).
  5. IP-netwerken (/24 of /48) zijn voorbereid, maar uitgeschakeld totdat de juridische toetsing is afgerond (cfg/swarm_lib.php).

6.8 Gebruik van kunstmatige intelligentie

Een taalmodel draait op onze eigen scanserver, niet bij een AI-aanbieder. Het wordt op twee plaatsen gebruikt: in de controledienst classificeert het formulieren waarvan de regels het type niet herkennen; daarbij ziet het de paginatitel, het paginaadres, de labels van de verzendknoppen, veldtypen, namen, labels en placeholders, en tot 400 tekens formuliertekst (scanner/src/classify.js). Het wordt alleen geraadpleegd als de regels “onbekend” opleveren; op deze manier geclassificeerde formulieren worden nooit verzonden en tellen niet mee voor de score en het oordeel. Score, oordeel, misbruikpreventie, zwermbescherming en spamregels zijn vaste regels, geen AI. Bij “Fix it for me” herschrijft het geplakte formuliercode; de code wordt niet opgeslagen. Het model neemt geen besluiten over mensen. Meer hierover op de pagina EU AI-verordening: hoe formexposed AI gebruikt.

6.9 Rechtsgronden

VerwerkingRechtsgrond
P1 Gratis controle: controle van het gevraagde domein; limieten en misbruikpreventieten aanzien van de aanvrager Art. 6(1)(b); ten aanzien van de beheerder en afgebeelde personen Art. 6(1)(f); misbruikpreventie Art. 6(1)(f)
P2 ProspectcontroleArt. 6(1)(f) (gerechtvaardigd belang van het bureau en van formexposed)
P3 OnderzoekArt. 6(1)(f)
P4 Controle van klantdomeinenArt. 6(1)(b) ten aanzien van de Klant; voor gegevens van derden op zijn website de instructies van de Klant op grond van Art. 28
P5 Scan achter de loginInstructies van de Klant op grond van Art. 28; de rechtsgrond van de Klant
P6 BezorgingscontroleInstructies van de Klant op grond van Art. 28; de rechtsgrond van de Klant (in onze voorbeeldtekst voor Klanten Art. 6(1)(f))
P7 ZwermbeschermingArt. 6(1)(f) (gezamenlijke spamafweer over vele websites heen)

Ons gerechtvaardigd belang bij P1 tot en met P3 ligt erin beheerders en hun dienstverleners zwakke plekken in hun formulieren te laten zien voordat die voor spam of misbruik worden uitgebuit, en in het verlenen van de dienst. De gegevens komen uit openbaar toegankelijke bronnen. De belangenafweging staat in paragraaf 7; of Art. 6(1)(f) het controleren van websites van derden op verzoek kan dragen, is een open vraag voor de juridische toetsing.

6.10 Ontvangers en doorgiften naar derde landen

OntvangerWatVerwerkingStatus
Niemand buiten formexposedControleresultaten, schermafbeeldingen, classificatie door het taalmodelP1–P5De controledienst en het taalmodel draaien op onze eigen servers; in het controlepad van de crawler is geen aanroep van een derde gevonden, behalve naar de gecontroleerde website zelf, naar de diensten waarvan zij inhoud insluit (zoals bij elke bezoeker) en naar de RDAP-dienst rdap.org voor de domeinleeftijd (alleen de domeinnaam); de bewakingen van de monitoring staan in de volgende regel
Iedereen die de link kentRapport met bevindingen en schermafbeeldingenP1, P2, P4willekeurige link met 128 bits (cfg/check_lib.php), pagina's met noindex (www/report.php)
Diensten die door de monitoring van een klantdomein worden geraadpleegdDNS-blocklists (SpamCop, PSBL, Mailspike, SURBL): domeinen en IP-adressen van servers, geen bezoekersgegevens; Google Web Risk alleen indien ingericht: het adres van de startpagina; tijdstempelautoriteiten Certum en DigiCert: alleen een hashwaarde van het bewijslogboek; RDAP via het IANA-register: alleen de domeinnaam; statuspagina's van providers: er wordt niets doorgegeven; wpvulnerability.net: identificatiecode van een plug-in (zonder versie) of thema en de WordPress-versieP4in gebruik; details in het Register van verwerkingsactiviteiten en op de pagina Subverwerkers
Namecheap, Inc. (Private Email), Phoenix, Arizona, USAControlekopieën inclusief echte bezoekersberichtenP6Overeenkomst nog niet gesloten; verwerkingslocatie en doorgiftemechanisme nog te onderzoeken
Namecheap, Inc. (VS)Registrar en DNS; totdat de mailbox is ingericht, doorsturing van algemene e-mails aan adressen van ons domein, niet van de controlekopieën (die bereiken de mailbox alleen via MX-records die er rechtstreeks naar verwijzen)– (geen controlekopieën)Doorgiftemechanisme te onderzoeken
Door de Klant gekozen meldingskanalen (e-mail, webhook, Slack, Discord, Microsoft Teams, Google Chat, Telegram)Gebeurtenis, domein, link; bij de echtheidscontrole het afzenderdomein als dat niet bij de website hoortP4, P6bestemming gekozen door de Klant; deels buiten de EU. Telegram-berichten versturen wij via onze bot; het doorgiftemechanisme daarvoor is een open vraag voor de juridische toetsing
Alle gekoppelde websitesLijst van linkdomeinenP7via het antwoord aan de plug-in
Tweede probeDomein, formulieradres, selector, stappenP4uitgeschakeld

6.11 Bewaring, gemeten, niet beoogd

Verwijdering vindt meestal 's nachts om 03:00 plaats in het statusproces (srv/cron_status.php, cfg/fristen_lib.php); meldingen van de zwermbescherming en prospectregels worden dagelijks vanaf 04:00 verwijderd, toewijzingen van de bezorgingscontrole bij elke ophaling; anonieme en prospectrapporten worden via hun vervaldatum verwijderd (cfg/check_lib.php). Schermafbeeldingen worden samen met hun scan van de schijf verwijderd (cfg/fristen_lib.php).

GegevensTermijn volgens de codeBronvermeldingBevinding
Gratis controle inclusief afbeeldingen30 dagencfg/check_lib.phpeffectief
Prospectcontrole inclusief afbeeldingen90 dagencfg/akquise_lib.php; srv/cron_status.php (prospectregels)effectief
Controles van een klantdomein13 maanden; de laatste blijft bewaard zolang het domein bestaatcfg/fristen_lib.phpeffectief
Resultaten van browsertrajecten inclusief zwart gemaakte afbeeldingen13 maandencfg/fristen_lib.phpeffectief
Gegevens van een verwijderd domeinonmiddellijk; wezen 's nachtscfg/fristen_lib.php (fe_domain_loeschen(), fe_fristen_lauf())effectief, inclusief de scriptinventaris en de scriptwijzigingen, die daarnaast geen eigen bewaartermijn hebben (zie Register van verwerkingsactiviteiten)
Onderzoek: ruwe gegevens inclusief afbeeldingenbij publicatiecfg/studie_lib.phpzonder publicatie geen termijn; de lijst van gecontroleerde hosts blijft ook na publicatie zonder termijn bewaard
Interne controles zonder domein en zonder rapportgeen–geen verwijdering; gemeten: 85 controles met 369 afbeeldingen sinds 22 september 2026 (R4)
Toewijzingen van de bezorgingscontrole180 dagencfg/zustellung_lib.phpeffectief
Resultaat van de echtheidscontrole bij het domeintot het volgende resultaat of de verwijdering van het domeincfg/zustellung_lib.phpoverschreven, niet in tijd begrensd
Controlekopieën in de mailboxtot de volgende geslaagde ophaling (interval van vijf minuten)cfg/zustellung_lib.phpkopieën en back-ups bij de mailboxprovider niet geverifieerd
Inloggegevens voor de scan achter de logintot verwijdering door de Klant of van het domein; in de taak maximaal tot het einde van de run, restanten na één uurcfg/login_lib.phpeffectief; in back-ups alleen als versleutelde tekst gedurende maximaal 14 dagen
Meldingen in de zwermbescherming30 dagencfg/swarm_lib.phpeffectief
Limieten van de gratis controle (IP, land, sessiehash)7 dagensrv/cron_status.phpeffectief
Notities over opvallend gedrag met IP-adres90 dagen na afhandelingsrv/cron_status.phpniet-afgehandelde notities zonder termijn; gemeten: 3 notities, alle afgehandeld
IP-adres, land, browser bij een opt-out12 maanden; de uitsluiting blijftcfg/fristen_lib.phpeffectief
Databaseback-ups14 dagencfg/backup_lib.phpeffectief; de back-ups worden momenteel op dezelfde locatie bewaard als de database en zijn niet afzonderlijk versleuteld; een versleutelde kopie op een tweede locatie is gepland (R13)

7. (b) Beoordeling van de noodzaak en evenredigheid

De maatstaf zijn de genoemde doeleinden: beheerders laten zien of hun formulieren beschermd zijn tegen spam en misbruik (P1 tot en met P5), controleren of formulier-e-mails aankomen en echt overkomen (P6), en gezamenlijk spam afweren over vele websites heen (P7). Deze doeleinden zijn legitiem. De vraag op grond van Art. 35(7)(b) is enger: is deze verwerking in deze diepte noodzakelijk voor het doel, en staat de inbreuk in verhouding tot het nut?

OnderdeelNoodzakelijk voor het doel?Evenredig in de gebouwde vorm?
Ophalen van enkele openbare pagina's, structuur van de formulieren, herkende beschermingsmaatregelenJa. Zonder deze is er geen bevinding.Ja. Maximaal acht pagina's (plus de weergaven uit paragraaf 6.1), een verbod op de startpagina in robots.txt wordt gerespecteerd, geen waarden van zichtbare velden, ontvangersadressen alleen als domein.
Schermafbeelding per formulierJa, als bewijs in het rapport: de beheerder ziet welk formulier wordt bedoeld.Grotendeels. De velden zijn leeg omdat de crawler niets invult. De afbeelding toont echter de omgeving van het formulierelement zonder iets zwart te maken (R3).
Schermafbeelding van de startpaginaNiet vereist voor de bevinding zelf. Zij dient om de gecontroleerde website in het rapport te herkennen.Slechts beperkt; verdere minimalisering gepland. Startpagina's tonen vaak mensen: teamfoto's, contactpersonen, klantreferenties met namen. Zie R3 en paragraaf 9.3.
Lezen van de waarden van verborgen velden (eerste 24 tekens, alleen tijdens de controle)Ja: daaruit worden tokens en tijdstempels herkend.Ja. Alleen het herkenningsresultaat wordt opgeslagen, niet de waarde, ook achter de login (R8).
Antwoordpagina op de testverzending (afbeelding en 300 tekens tekst)Ja, als bewijs van hoe het formulier reageerde.Ja. Het antwoord heeft betrekking op ons gemarkeerde testbericht zonder persoonsgegevens.
Classificatie door het taalmodelNuttig, niet noodzakelijk: zonder blijven meer formulieren “onbekend”.Ja. Lokaal, zonder verstrekking, zonder het recht om te verzenden.
Actieve testverzendingenJa. Of een bescherming werkt, blijkt pas wanneer zij wordt getest.Ja, met een maximum en markering. De voorwaarde – bewijs van zeggenschap – wordt echter nooit vernieuwd (R7).
Zoeken naar blootgestelde bestandenJa voor de Klant, van wie de formuliergegevens daar blootgesteld kunnen zijn.Ja. Alleen geverifieerde domeinen, maximaal 8 KB, inhoud nooit opgeslagen.
Scan achter de loginJa voor formulieren in het ledengedeelte die anders ongecontroleerd zouden blijven.Grotendeels. Versleuteling en verwijdering zijn zorgvuldig gebouwd; het inloggen accepteert echter onversleutelde verbindingen en foutieve certificaten (R8).
Controlekopie van echte bezoekersberichtenNiet voor het bewijs van bezorging. Dat steunt alleen op de kopie van onze test (cfg/zustellung_lib.php). Echte berichten komen mee omdat een blinde kopie in het formulier geen onderscheid maakt tussen een test en een echt bericht. Zij zijn nuttig voor de echtheidscontrole (SPF, DKIM, DMARC), omdat zij de werkelijke verzendroute tonen.Gedeeltelijk. De inhoud wordt niet opgeslagen, maar wel gelezen, en blijft tot de ophaling bij de mailboxprovider, met wie de overeenkomst nog openstaat (R1, R2). Een minder ingrijpend ontwerp is technisch mogelijk: met onze plug-in zou de blinde kopie kunnen worden beperkt tot gemarkeerde testberichten (paragraaf 9.3).
Opslag van het afzenderdomein van echte berichtenGedeeltelijk: het toont of het formulier verzendt met het adres van de bezoeker als afzender (een veelvoorkomende oorzaak van classificatie als spam).Onder voorwaarden. Voor een individu met een eigen domein is het domein een persoonsgegeven, en het gaat mee in de melding aan de Klant en diens kanalen (R1).
Gedeelde lijst van linkdomeinenJa. Een spamlink die tegelijk op vele websites opduikt, is een sterk signaal dat een afzonderlijke website niet heeft.Ja, met minimumaantallen, uitzonderingen en quarantaine in plaats van verwijdering. IP-netwerken zouden zonder nieuwe beoordeling niet evenredig zijn.
Ruwe gegevens van het onderzoekTot de evaluatie, ja.Zonder maximale termijn niet (R4).
Rapport onder een willekeurige linkJa. Het doorgeven van het rapport – bijvoorbeeld aan de dienstverlener die de website onderhoudt – is het doel van de gratis controle.Ja. Willekeurige link met 128 bits, noindex, gratis rapport alleen als uittreksel (cfg/check_lib.php, FE_FREE_DETEKTOREN), verwijdering na 30 dagen.

Rechtmatigheid. Voor P1 tot en met P3 en P7 baseren wij ons op Art. 6(1)(f). Voor de afweging pleit: de gegevens zijn openbaar en worden op dezelfde manier opgehaald als door elke bezoeker; er wordt niets verzonden; persoonsgegevens zijn incidenteel en gering; de termijnen zijn kort; de beheerder kan verdere controles door de crawler uitsluiten via een verbod op de startpagina in robots.txt en elke verdere controle via onze opt-outpagina, onmiddellijk en zonder bewijs; het nut – een beschermd formulier – komt ook ten goede aan de beheerder en diens bezoekers. Daartegen pleit: de beheerder komt niets van de controle te weten, het rapport is voor derden bedoeld, en bij eenmanszaken beoordeelt het een persoon. Wij achten de afweging verdedigbaar zolang de maatregelen uit paragraaf 9.1 blijven bestaan; juridische bevestiging staat nog uit.

Informatie aan betrokkenen (Art. 13 en 14). Wij informeren beheerders en mensen op gecontroleerde pagina's via de crawlerpagina, die in de identificatie van elke opvraging wordt genoemd, via de Privacyverklaring en via de opt-outpagina. Mensen die incidenteel in een schermafbeelding voorkomen individueel informeren, zou alleen mogelijk zijn als wij hen identificeerden – wat een verdere, zwaardere inbreuk zou zijn. In zoverre baseren wij ons op Art. 14(5)(b). Bezoekers van wie de berichten door de controlekopie gaan, worden door de Klant geïnformeerd; de Verwerkersovereenkomst verplicht daartoe, en wij stellen daarvoor een tekstblok beschikbaar.

Minimale gegevensverwerking (Art. 5(1)(c)). Die is op veel plaatsen zichtbaar en in de code verankerd: geen veldwaarden, ontvangersadressen alleen als domein, accountidentificaties in scriptadressen verborgen, geen inhoud uit de controlekopie in de database, geen schermafbeeldingen achter de login, alleen domeinen in de zwermbescherming. Op twee plaatsen is verdere minimalisering mogelijk en gepland (paragraaf 9.3): bij de schermafbeelding van de startpagina zonder zwart maken en bij het afzenderdomein van echte berichten.

Opslagbeperking (Art. 5(1)(e)). Sinds 27 september 2026 houdt de nachtelijke run zich voor klantgegevens aan de termijnen in de Privacyverklaring en ruimt hij gegevens op die uit de periode daarvóór zonder bijbehorend domein zijn achtergebleven (cfg/fristen_lib.php). Twee routes zonder termijn blijven open: interne controles en niet-gepubliceerde onderzoeken (R4).

Juistheid (Art. 5(1)(d)). Een bevinding kan onjuist zijn: een formulier lijkt onbeschermd omdat de bescherming pas na een interactie laadt, of de crawler werd door een firewall anders behandeld dan een bezoeker. Voor een beheerder van wie de website publiekelijk als “Blootgesteld” wordt rondgestuurd, is dat een kwestie van reputatie. Het rapport noemt daarom de methode, toont bewijs en wijst op de grenzen van een controle van buitenaf.

Resultaat ten aanzien van evenredigheid: Het controleren van websites van derden en eigen websites is in de gebouwde vorm in wezen evenredig. Op drie plaatsen is verbetering nodig die met gewone middelen te realiseren is en waarvoor maatregelen zijn gepland (paragraaf 9.3): de schermafbeeldingen van de startpagina, de interne controles zonder termijn en het onversleutelde inloggen bij de scan achter de login. De bezorgingscontrole is evenredig voor de testkopie en voor de echtheidscontrole; voor echte bezoekersberichten geldt dat alleen zolang hun inhoud niet wordt opgeslagen, de route via de mailboxprovider contractueel is geborgd en de Klant zijn bezoekers informeert. Vandaag ontbreekt het tweede van deze drie punten.

8. (c) Beoordeling van de risico's voor de rechten en vrijheden van betrokkenen

Beoordeeld wordt het risico voor de betrokkenen, niet voor formexposed. De waarschijnlijkheid wordt ingeschat als gering, mogelijk, waarschijnlijk of ingetreden; “ingetreden” betekent dat de gebeurtenis geen voorspelling is, maar een gemeten toestand. De ernst wordt ingeschat als beperkt, aanzienlijk, ernstig of zeer ernstig, afhankelijk van wat de persoon te verliezen heeft: de vertrouwelijkheid van zijn of haar bericht, de controle over een account, de zakelijke reputatie, de mogelijkheid om een recht uit te oefenen. Het niveau volgt uit beide en beschrijft de huidige toestand met de maatregelen uit paragraaf 9.1.

Nr.RisicoVerwerkingWaarschijnlijkheidErnstNiveau
R1Echte bezoekersberichten in de controlekopie, inclusief mogelijke bijzondere categorieënP6Ingetreden zodra ingeschakeldErnstigHoog
R2Route van de controlekopie via de mailboxprovider zonder gesloten overeenkomst en met mogelijke band met een derde landP6Waarschijnlijk zolang de overeenkomst ontbreektErnstigHoog
R3Schermafbeeldingen van websites van derden zonder zwart makenP1–P4WaarschijnlijkBeperktMiddel
R4Controlegegevens en schermafbeeldingen zonder verwijderrouteP3, interne controlesIngetredenAanzienlijkHoog
R5Controle en openbare beoordeling van websites van derden zonder medeweten van de beheerder; misbruik als verkenningsinstrumentP1MogelijkAanzienlijkMiddel
R6Prospectcontrole als basis voor ongevraagde benaderingP2WaarschijnlijkBeperktMiddel
R7Bewijs van zeggenschap wordt nooit vernieuwdP4, P5MogelijkAanzienlijkMiddel
R8Inloggegevens en inhoud bij de scan achter de loginP5MogelijkErnstigMiddel; hoog bij echte accounts
R9Actieve testverzendingen en bestandscontrole op de website van de KlantP4GeringAanzienlijkLaag
R10Classificatie door een taalmodelP1–P4GeringBeperktLaag
R11Gedeelde blocklist op basis van meldingen van vele websitesP7MogelijkBeperktLaag tot middel; hoog met IP-netwerken
R12Rapporten en schermafbeeldingen onder een openbare linkP1, P2, P4MogelijkBeperktLaag
R13Zwakke plekken in de infrastructuur: back-ups, servertoegang, scanserveralleMogelijkErnstigHoog
R14Rechten van betrokkenen voor mensen die ons niet kennenP1–P6WaarschijnlijkBeperktLaag

R1 – Echte bezoekersberichten in de controlekopie

Dit is het ernstigste risico van de dienst, en het ontstaat niet door een fout, maar door het ontwerp. Een blinde kopie in het formulier maakt geen onderscheid tussen ons testbericht en het bericht van een bezoeker. Als een Klant de bezorgingscontrole inschakelt, bereikt elk bericht dat via dat formulier wordt verzonden onze controlemailbox (cfg/zustellung_lib.php). De ophaling leest de headers en de eerste 8 KB van de tekst in het geheugen om naar onze test-identificatiecode te zoeken (cfg/zustellung_lib.php). Bij een gewoon contactformulier betekent dat naam, e-mailadres, telefoonnummer en het volledige bericht.

Wat de bezoeker schrijft, bepaalt hij of zij zelf, en het veld nodigt uit tot persoonlijke inhoud: een afspraakverzoek met een beschrijving van klachten aan een medische praktijk, een uiteenzetting van een juridisch geschil aan een advocatenkantoor, een sollicitatie, een vraag over een kind aan een school. Onze juridische documenten zeggen dat kopieën “geen bijzondere categorieën van persoonsgegevens mogen bevatten”. Dat is een verzoek aan de Klant, geen beschermingsmaatregel: noch de Klant noch wij weten vooraf wat een bezoeker zal schrijven.

Hierbij horen twee zijroutes. Ten eerste slaat de echtheidscontrole het domein van het afzenderadres op bij het domein (cfg/zustellung_lib.php). Als het formulier verzendt met het adres van de bezoeker als afzender, is dit het domein van de bezoeker – betekenisloos bij een grote mailprovider, maar een persoonsgegeven bij een individu met een eigen domein. Dit domein verschijnt ook in de melding die naar de Klant en naar de door hem gekozen kanalen gaat (cfg/zustellung_lib.php). Ten tweede slaat zij het adres van de verzendende mailserver op (cfg/zustellung_lib.php); dat is in de regel de server van de website, niet die van de bezoeker.

Waarschijnlijkheid – ingetreden zodra ingeschakeld. De vraag is niet of er echte berichten binnenkomen, maar hoeveel. Gemeten op het ontwikkelsysteem is de functie voor geen enkel domein ingeschakeld. Ernst – ernstig. De vertrouwelijkheid van een bericht aan een onderneming is voor veel mensen belangrijk, en bij een deel van de typische Klanten zijn gegevens in de zin van Art. 9 te verwachten. De ernst wordt verzacht doordat de inhoud niet in de database terechtkomt, slechts kort in de mailbox blijft en door niemand bij formexposed wordt gelezen. Niveau – hoog.

R2 – Route van de controlekopie via de mailboxprovider zonder gesloten overeenkomst

Voordat onze ophaling een controlekopie te zien krijgt, staat die in de mailbox bij Namecheap, Inc. (Private Email), Phoenix, Arizona, USA. Zij komt daar alleen aan als de MX-records van ons domein rechtstreeks naar deze mailbox verwijzen; doorsturing bij de domeinregistrar Namecheap, Inc. is geen station van de controlekopieën (via doorsturing bereiken zij de mailbox niet). Voor het station dat overblijft, zijn de contractuele afspraken nog open: de overeenkomst met de mailboxprovider is niet gesloten, de opslaglocaties, subverwerkers en back-uptermijnen ervan zijn niet vastgesteld, en of voor de verwerkingslocatie een adequaatheidsbesluit of standaardcontractbepalingen nodig zijn en van toepassing zijn, is open. Voor onze eigen transactionele e-mails is dit een kwestie van contractvormgeving. Voor de controlekopieën weegt het zwaarder: daar gaat het om gegevens die wij als verwerker ontvangen, en elke dienstverlener langs de route is een subverwerker voor wie wij op grond van Art. 28(4) aansprakelijk zijn.

Bovendien geldt “verwijderd na ophaling” alleen voor ons zicht op de mailbox. Of de provider verwijderde e-mails in eigen back-ups of in een prullenbak bewaart, en hoe lang, is niet geverifieerd. Als een ophaling afbreekt, blijven de e-mails staan tot de volgende geslaagde run (cfg/zustellung_lib.php); als het statusproces uitvalt, blijven ze voor onbepaalde tijd staan. Ten slotte is de beveiliging van de ophaling zelf een van de punten die vóór de lancering op het productiesysteem moeten worden gecontroleerd (paragraaf 9.3).

Waarschijnlijkheid – waarschijnlijk zolang de overeenkomst ontbreekt: elke controlekopie neemt deze route. Ernst – ernstig, om dezelfde redenen als bij R1. Niveau – hoog. De inrichtingschecklist van de applicatie meldt de ontbrekende mailbox als waarschuwing; er is geen blokkade die de bezorgingscontrole zonder gedocumenteerde overeenkomst tegenhoudt.

R3 – Schermafbeeldingen van websites van derden zonder zwart maken

De crawler maakt een schermafbeelding van het zichtbare gedeelte van de eerste pagina en een afbeelding van het formulierelement van elk zichtbaar formulier (scanner/src/crawl.js). Daarbij wordt niets zwart gemaakt. Bij browsertrajecten is dat anders: daar worden invoervelden vóór de schermafbeelding gemaskeerd (scanner/src/browser.js). Alleen de afbeeldingen van browsertrajecten zijn dus “opgeschoond”, niet die van de crawler en niet de afbeelding van de antwoordpagina van een actieve controle.

Omdat de crawler niets invult, zijn de formuliervelden leeg. De startpagina van een klein bedrijf toont echter vaak de eigenaar, het team, klantreferenties met namen en foto's, of een chatvenster met de foto van een medewerker. Dit alles is openbaar; de schermafbeelding maakt er een kopie van die bij ons wordt opgeslagen, in het rapport verschijnt en met de link kan worden doorgegeven.

Waarschijnlijkheid – waarschijnlijk. In de dataset van het ontwikkelsysteem zijn 432 schermafbeeldingen gemeten. Ernst – beperkt: de inhoud is al openbaar, en de termijnen voor controles zonder account zijn kort. Niveau – middel, omdat de afgebeelde personen er niet van weten en de afbeelding van de startpagina niet nodig is voor de bevinding.

R4 – Controlegegevens en schermafbeeldingen zonder verwijderroute

De nachtelijke run verwijdert controles via twee routes: via de vervaldatum van een rapport (cfg/check_lib.php) en via de termijn voor controles van een klantdomein (cfg/fristen_lib.php, alleen voor controles met een domein). Een controle die noch een rapport noch een domein heeft, valt door beide netten. Dat zijn de controles met het vertrouwensniveau “intern”: onderzoeken en controles die de aanbieder via de opdrachtregel aanmaakt.

  • Onderzoeken verwijderen hun ruwe gegevens bij publicatie (cfg/studie_lib.php). Als een onderzoek nooit wordt gepubliceerd – omdat het te weinig websites met een formulier heeft (cfg/studie_lib.php weigert dan de publicatie) of omdat het blijft liggen – blijven controles, formulieren, bevindingen en schermafbeeldingen zonder termijn bewaard.
  • Interne controles via de opdrachtregel hebben helemaal geen verwijderroute. Gemeten op 11 oktober 2026: 85 zulke controles van websites van derden met 978 formulieren en 369 schermafbeeldingen, de oudste van 22 september 2026, geen enkele met een rapport of een domein.
  • Notities over opvallend gedrag bij de gratis controle bevatten het IP-adres en worden 90 dagen na afhandeling verwijderd (srv/cron_status.php). Een notitie die nooit wordt afgehandeld, blijft staan. Gemeten: drie notities, alle afgehandeld.

Waarschijnlijkheid – ingetreden. De 85 controles zijn geen scenario, maar bestaande gegevens. Op het ontwikkelsysteem zijn het controles uit een praktijktest; op het productiesysteem geldt dezelfde code. Ernst – aanzienlijk: voor deze gegevens bestaat geen bewaartermijn. Ten aanzien van het beginsel van opslagbeperking (Art. 5(1)(e)) is dit een open punt met een geplande maatregel (paragraaf 9.3, prioriteit “eerst”), en het raakt juist mensen die niets van de controle weten. Interne controles worden beschreven in het Register van verwerkingsactiviteiten; de Privacyverklaring noemt ze nog niet afzonderlijk (paragraaf 9.4). Niveau – hoog.

R5 – Controle en openbare beoordeling van websites van derden zonder medeweten van de beheerder

Iedereen kan elke openbaar toegankelijke website laten controleren, zonder account en zonder enige band ermee. De beheerder wordt niet op de hoogte gebracht. Het resultaat is een rapport dat de website beoordeelt als “Blootgesteld”, “Gedeeltelijk beschermd” of “Beschermd” en dat iedereen met de link kan zien. Voor betrokkenen zijn twee gevolgen denkbaar. Een eenmanszaak krijgt publiekelijk – al is het alleen voor de ontvangers van de link – een beoordeling die een onjuiste bevinding kan zijn. En het rapport laat een spammer zien welk formulier zonder hindernis kan worden ingevuld.

Daar staat een reeks blokkades tegenover (cfg/check_lib.php): maximaal één controle per domein in zeven dagen, daarna hetzelfde rapport; limieten per IP-adres en sessie; een daglimiet voor de hele dienst; geen controles van zeer nieuwe domeinen, die typisch zijn voor misbruik; een notitie en een signaal bij opvallend gedrag; robots.txt en opt-out, tweemaal gecontroleerd (cfg/check_lib.php en in de controledienst). Het gratis rapport is een uittreksel: het toont alleen de basisbevindingen, niet het bewijs van alle detectoren. En het zegt niets wat een bot niet binnen enkele seconden zelf zou kunnen vaststellen – een onbeschermd formulier is van buitenaf zichtbaar.

Waarschijnlijkheid – mogelijk. Ernst – aanzienlijk voor een eenmanszaak van wie het formulier na een rapport wordt aangevallen of van wie de beoordeling onjuist is. Niveau – middel.

R6 – Prospectcontrole als basis voor ongevraagde benadering

In de interface wordt de prospectcontrole omschreven als “opening voor het eerste gesprek”. Hoe het bureau de korte bevinding gebruikt, bepaalt het bureau; technisch kan het die ook sturen naar een beheerder die er niet om heeft gevraagd. Wij nemen met niemand contact op (cfg/akquise_lib.php), en de Gebruiksvoorwaarden verplichten het bureau zich te houden aan de regels voor reclame en benadering. Een ongevraagde e-mail met de bevinding is echter, ook tussen ondernemingen, direct marketing, waarvoor in Polen (Art. 398 van de wet op de elektronische communicatie (Prawo komunikacji elektronicznej, PKE)) en in Duitsland (§ 7(2) van de Duitse wet tegen oneerlijke concurrentie (Gesetz gegen den unlauteren Wettbewerb, UWG)) voorafgaande toestemming vereist is. De interface wijst hier niet op; de teksten van de prospectcontrole spreken alleen van “passief” en “opt-outlijst”.

Waarschijnlijkheid – waarschijnlijk, omdat de functie dient voor klantenwerving en wij niet kunnen controleren of de ontvanger toestemming heeft gegeven. Ernst – beperkt: voor de beheerder is het een vervelende marketingmail met een beoordeling van zijn of haar website. Niveau – middel. Het risico ligt in het gedrag van het bureau; omdat de functie van ons komt, is een melding in de interface gepland (paragraaf 9.3).

R7 – Bewijs van zeggenschap wordt nooit vernieuwd

Actieve testverzendingen, het zoeken naar blootgestelde bestanden en de scan achter de login vereisen dat de Klant heeft aangetoond zeggenschap over het domein te hebben. Dit bewijs wordt één keer gecontroleerd (cfg/verify_lib.php) en daarna nooit meer. Er is in de code geen route waarlangs een domein zijn bewijs verliest. Als het domein van eigenaar wisselt, een bureau zijn opdracht beëindigt of de beheerder het DNS-record verwijdert, gaan de controles door – tot dagelijks, met tot vijf testverzendingen en, indien opgeslagen, met de login van een testaccount waarvan de nieuwe beheerder mogelijk niet op de hoogte is. Wat daarentegen niet mogelijk is, is het bewijs door hernoemen naar een andere host over te dragen: de hostnaam van een domein met bewijs van zeggenschap kan niet worden gewijzigd.

Waarschijnlijkheid – mogelijk: wisselingen van domein en opdracht zijn voor bureaus dagelijkse kost. Ernst – aanzienlijk voor de nieuwe beheerder en diens medewerkers, die gemarkeerde testberichten ontvangen en van wie de website zonder hun toestemming wordt doorzocht op blootgestelde bestanden. Niveau – middel. De testberichten verklaren zichzelf en verwijzen naar de crawlerpagina en de opt-out; de opt-out werkt ook tegen controles door Klanten.

R8 – Inloggegevens en inhoud bij de scan achter de login

De versleuteling van de inloggegevens is zorgvuldig gebouwd: de webserver kan ze na opslag niet meer lezen, database en back-up bevatten alleen versleutelde tekst, het record is aan zijn domein gebonden, de inloggegevens komen alleen via de standaardinvoer in de container en worden daarna uit het geheugen gewist (paragraaf 6.5). Er blijven twee leemten; een derde punt betreft alleen het lezen, niet het opslaan.

  • Onversleuteld inloggen is toegestaan. De adrescontrole staat naast https ook http toe (cfg/login_lib.php, scanner/src/login.js). Als de Klant een inlogpagina met http invoert, gaan gebruikersnaam en wachtwoord bij elke controle in leesbare vorm over het internet.
  • Certificaatfouten stoppen het inloggen niet. Het inloggen breekt momenteel niet af wanneer het certificaat van de site van de Klant ongeldig is (scanner/src/login.js). Het certificaat beschermt de inloggegevens op weg naar de site van de Klant daardoor niet volledig. Afbreken bij certificaatfouten is gepland (paragraaf 9.3, prioriteit “eerst”).
  • Waarden van verborgen velden achter de login worden gelezen, niet opgeslagen. De crawler leest de eerste 24 tekens van de waarde van verborgen velden (scanner/src/crawl.js), en dezelfde extractiefunctie draait achter de login (scanner/src/login.js). Daar bevatten verborgen velden vaak een klantnummer, een gebruikersidentificatie of het e-mailadres van het ingelogde account; in de veldkaart en de bevindingen komen echter alleen de veldnaam, het type, het label en het herkenningsresultaat terecht.

Daarbij komt wat de code niet kan voorkomen: de Klant bevestigt dat hij een testaccount met zo weinig mogelijk rechten gebruikt (cfg/login_lib.php), maar hij kan een echt beheerdersaccount invoeren. De pagina's die de scanner dan leest, worden door de Klant bepaald; adressen met woorden voor afmelden en verwijderen worden geblokkeerd, andere handelingen die een website via een eenvoudige aanvraag in gang zet, echter niet.

Waarschijnlijkheid – mogelijk. Ernst – ernstig als een account met ruime rechten wordt getroffen; het ledengedeelte met de gegevens van alle gebruikers ligt dan open. Niveau – middel bij een testaccount met weinig rechten, hoog bij een echt account. Gemeten op het ontwikkelsysteem is er geen testaccount opgeslagen.

R9 – Actieve testverzendingen en bestandscontrole op de website van de Klant

Een testverzending gaat naar de mensen die de formulier-e-mails van de Klant lezen – diens medewerkers of een dienstverlener. Zij bevat geen persoonsgegevens: de afzender is dummy@formexposed.com, tekst en onderwerp zijn gemarkeerd en vermelden de controle-identificatiecode (scanner/src/active.js). Het risico ligt in een verkeerde classificatie: als de scanner een sollicitatie-, boekings- of adviesformulier voor een contactformulier zou aanzien, zou het testbericht terechtkomen in een proces dat gevolgen heeft. Daartegenover staan de strikte regels voor “verzendbaar” (scanner/src/classify.js), de blokkering voor domeinen van overheidsinstanties, onderwijsinstellingen, klinieken, medische praktijken, politie en rechtbanken (scanner/src/classify.js) en de uitsluiting van het taalmodel van deze beslissing (scanner/src/classify.js). Uit het antwoord worden de status, het doeladres, de titel, 300 tekens tekst en een afbeelding opgeslagen; zij hebben betrekking op ons testbericht.

De bestandscontrole leest maximaal 8 KB van typische paden. Als daar werkelijk een databasedump blootligt, kunnen deze 8 KB formulierinvoer van bezoekers bevatten. Ze worden alleen op een kenmerk gecontroleerd en weggegooid (cfg/dateien_lib.php); opgeslagen worden het pad, het type en de ernst.

Waarschijnlijkheid – gering. Ernst – aanzienlijk. Niveau – laag. Gemeten op het ontwikkelsysteem staat er één actieve controle in de dataset, zonder geaccepteerde verzending.

R10 – Classificatie door een taalmodel

Voor formulieren die de regels niet herkennen, ontvangt het taalmodel de paginatitel, het adres, knopteksten, veldbeschrijvingen en tot 400 tekens formuliertekst (scanner/src/classify.js). Daarin kan een naam staan, bijvoorbeeld “Uw contactpersoon: …”. Het draait op onze eigen server; in de code gaat er niets naar een derde. Of de modelsoftware aanvragen logt, is niet geverifieerd. Het resultaat ervan bepaalt alleen het weergegeven formuliertype en kan een formulier niet verzendbaar maken; een verkeerde classificatie leidt tot een slechtere bevinding, niet tot een handeling.

Waarschijnlijkheid – gering. Ernst – beperkt. Niveau – laag.

R11 – Gedeelde blocklist op basis van meldingen van vele websites

Een domein op de lijst zorgt ervoor dat berichten met links ernaar op alle gekoppelde websites in quarantaine belanden. Als het domein van een individu is – een vakman, een fotograaf, een blog – bereiken diens berichten met een link naar de eigen website de ontvangers te laat. Zo'n domein kan op de lijst komen doordat spammers het misbruiken, of doordat iemand opzettelijk afgewezen berichten met dat domein naar meerdere websites stuurt.

Daartegenover staan (cfg/swarm_lib.php): minimaal drie verschillende websites en vijf treffers binnen zeven dagen; vaste uitzonderingen voor grote diensten; nooit de domeinen van onze Klanten; handmatige verwijdering via een tool op de server; quarantaine in plaats van verwijdering; de lijst wordt dagelijks opnieuw opgebouwd, en wat niet meer wordt gemeld, valt eraf. Betrokkenen kunnen de lijst niet inzien en hebben geen eigen route om verwijdering te eisen, behalve via ons.

Waarschijnlijkheid – mogelijk. Ernst – beperkt, omdat er niets verloren gaat en de ontvanger het bericht kan vrijgeven. Niveau – laag tot middel. Met ingeschakelde IP-netwerken zouden netwerken van hele providers worden getroffen, IP-adressen zijn persoonsgegevens, en de ernst zou stijgen tot aanzienlijk: hoog.

R12 – Rapporten en schermafbeeldingen onder een openbare link

Rapporten van de gratis controle, de prospectcontrole en de controles van klantdomeinen zijn zonder inloggen toegankelijk onder een willekeurige link. De link bevat 128 bits willekeur en kan niet worden geraden (cfg/check_lib.php). De pagina's dragen noindex, de applicatie verstuurt een referrerbeleid dat alleen de oorsprong doorgeeft (www/.htaccess), en schermafbeeldingen worden alleen samen met het rapport geleverd waartoe ze behoren; een ander afbeeldingsnummer levert “niet gevonden” op (www/shot.php). Het risico is niet cryptografisch, maar menselijk: een link wordt doorgestuurd, in een ticket gekopieerd, in een chat gedeeld. Wie hem opent, wordt alleen zoals elke paginaweergave vastgelegd in het logboek van paginaweergaven (60 dagen), waarin de link zelf alleen gemaskeerd voorkomt; er is geen lijst van lezers per rapport.

Waarschijnlijkheid – mogelijk. Ernst – beperkt, omdat het rapport alleen openbare informatie toont en na respectievelijk 30 of 90 dagen verloopt; rapporten over klantdomeinen blijven toegankelijk zolang de controle bestaat (13 maanden, de laatste langer). Niveau – laag.

R13 – Zwakke plekken in de infrastructuur

De volgende punten staan in ons interne beoordelingspakket als open vermeld en worden hier niet verbloemd. Wij beschrijven ze zo nauwkeurig als Klanten voor hun eigen beoordeling nodig hebben, maar niet zo nauwkeurig dat de beschrijving een aanvaller de weg wijst; de details verstrekken wij op verzoek aan een toezichthoudende autoriteit.

  • Back-ups van de database worden momenteel op dezelfde locatie bewaard als de database en zijn niet afzonderlijk versleuteld; een versleutelde kopie op een tweede locatie is gepland (cfg/backup_lib.php). Tot die tijd beschermen zij niet tegen verlies van de locatie, en wie de database bemachtigt, bemachtigt ook de back-ups. De inloggegevens voor de scan achter de login zitten er alleen als versleutelde tekst in.
  • Geen versleuteling van de database in rust. Uitzonderingen zijn de velden die afzonderlijk worden versleuteld (inloggegevens van de testaccounts, geheim voor de tweede factor).
  • Verbindingen binnen ons interne netwerk zijn niet overal versleuteld.
  • Serverbeheer. De beveiliging van de beheertoegang tot onze servers voldoet nog niet aan de standaard die wij voor de bedrijfsvoering beogen; de beveiliging van het serverbeheer wordt voortgezet.
  • Controleomgeving. De scanserver opent websites van derden in een browser. De controlecontainers zijn geïsoleerd – een eigen netwerk, geen bijzondere rechten, alleen-lezen, begrensd (scanner/src/worker.js). De scheiding tussen de controleomgeving en de overige onderdelen van de dienst wordt verder versterkt (paragraaf 9.3).

Waarschijnlijkheid – mogelijk. Ernst – ernstig, omdat in een noodgeval alles tegelijk zou worden getroffen. Niveau – hoog. De afzonderlijke punten zijn met gewone middelen te verhelpen (paragraaf 9.3).

R14 – Rechten van betrokkenen voor mensen die ons niet kennen

Wie incidenteel in een schermafbeelding voorkomt of van wie een bericht door een controlekopie is gegaan, weet meestal niet dat wij bestaan. Zelfs als hij of zij dat wel weet, is er geen sleutel tot “zijn of haar” gegevens: wij slaan die niet per persoon op, maar per domein en controle. Een verzoek om inzage op grond van Art. 15 kunnen wij alleen beantwoorden als de persoon het domein noemt; dan kunnen wij de bestaande controles en afbeeldingen doorlopen. Voor echte bezoekersberichten valt er niets te verstrekken, omdat wij ze niet opslaan – behalve het afzenderdomein uit R1. De opt-out werkt alleen voor beheerders van een domein, niet voor afgebeelde personen; voor hen blijft de route via contact@lukaswojcik.com.

Waarschijnlijkheid – waarschijnlijk als structurele situatie. Ernst – beperkt, omdat de gegevens kortlevend zijn en niet per persoon geordend. Niveau – laag.

9. (d) Maatregelen om de risico's aan te pakken

Elke maatregel heeft een status, en de statussen zijn geen versiering. Vandaag geïmplementeerd – geverifieerd betekent: gelezen in de code van het ontwikkelsysteem en, waar mogelijk, getoetst aan de database. Gedeeltelijk betekent: het mechanisme bestaat, maar bereikt zijn doel nog niet volledig. Gepland betekent: voorgesteld door deze beoordeling en niet gebouwd; of en wanneer, beslist de eigenaar. Nog vast te stellen zijn procedures en beslissingen die geen code vervangt. Een GEB die geplande maatregelen als geïmplementeerd voorstelt, verliest haar waarde juist in de situatie waarin zij nodig is.

9.1 Vandaag geïmplementeerd – geverifieerd

MaatregelPakt aanBronvermelding
robots.txt wordt door de crawler vóór elke controle gelezen; een uitsluiting die de startpagina omvat, een onbereikbare robots.txt of een serverfout beëindigt de controle (subpaden worden niet afzonderlijk in acht genomen; puls, ophalen van bewijs, headertool en bestandszoektocht lezen het bestand niet)R5, rechtmatigheidscanner/src/net.js
Opt-out zonder bewijs, onmiddellijk effectief, voor het domein en de www-variant ervan, voor anonieme controles, prospects, onderzoeken en controles van Klanten (lopende monitoring eindigt bij de volgende geplande controle); tweemaal gecontroleerd (applicatie en controledienst); alleen door ons opgeheven op verzoek en met bewijsR5, R7, Art. 21cfg/check_lib.php; cfg/akquise_lib.php; cfg/studie_lib.php; scanner/src/worker.js
Gratis controle: noodstop, reCAPTCHA, één controle per domein en week, limieten per IP-adres en sessie, daglimiet, geen nieuwe domeinen, alleen openbare adressen, notitie en signaal zonder inhoud bij afwijkingenR5cfg/check_lib.php
Voor limieten wordt de sessie alleen als hashwaarde opgeslagen, nooit de sessie-identificatiecodeMinimaliseringcfg/check_lib.php
Geen veldwaarden (het begin van verborgen velden en data-attributen wordt alleen tijdens de controle gelezen, paragraaf 6.2); ontvangersadressen alleen als domein; accountidentificaties in scriptadressen verborgenMinimaliseringscanner/src/crawl.js
Het gratis rapport is een uittreksel: alleen basisbevindingen, geen bewijs van alle detectorenR5cfg/check_lib.php, FE_FREE_DETEKTOREN
Rapporten onder een willekeurige link van 128 bits, noindex, afbeeldingen alleen bij het eigen rapport, buiten de openbare webdirectory; de link verschijnt in het logboek van paginaweergaven alleen gemaskeerdR12cfg/check_lib.php; www/report.php; www/shot.php
Verwijdering: anonieme rapporten na 30 dagen, prospects na 90 dagen, controles van Klanten na 13 maanden (de laatste per domein blijft bewaard zolang het domein bestaat), de gegevens van een verwijderd domein onmiddellijk (voor uitzonderingen zie paragraaf 6.11), afbeeldingen telkens meeOpslagbeperkingcfg/check_lib.php; cfg/fristen_lib.php
Onderzoek: publicatie alleen als totaal, segmenten pas vanaf 20 websites met een formulier, ruwe gegevens bij publicatie verwijderdR4 gedeeltelijk, P3cfg/studie_lib.php
Controlecontainers: een eigen geïsoleerd netwerk, geen bijzondere rechten, alleen-lezen, geheugen- en proceslimieten, tijdslimiet; filter tegen privébestemmingen bij elke aanvraag, service workers geblokkeerd en WebSocket-verbindingen gesloten zodat niets het filter omzeilt; aanvragen door de webserver alleen op webpoorten en alleen naar precies het vooraf gecontroleerde openbare adresR13scanner/src/worker.js; scanner/src/net.js
Actieve controle voor Klanten alleen bij een geverifieerd domein (intern ook bij onze eigen test- en demodomeinen) en met ingeschakelde noodstop, tweemaal gecontroleerd; maximaal vijf verzendingen; alleen duidelijk herkende contactformulieren zonder verplichte persoonsgegevens; geen domeinen van overheidsinstanties, onderwijsinstellingen, klinieken, medische praktijken, politie of rechtbanken; het taalmodel mag niets vrijgeven; testbericht zonder persoonsgegevens, gemarkeerd, met verwijzing naar de crawlerpagina en de opt-outR9scanner/src/worker.js; scanner/src/classify.js; scanner/src/active.js
Browsertrajecten: alleen GET en HEAD, gevaarlijke adressen geblokkeerd, verzonnen waarden verlaten de browser niet, afbeeldingen met zwart gemaakte invoerveldenR3 (voor deze afbeeldingen), R9scanner/src/browser.js
Bestandscontrole: alleen geverifieerde domeinen, één opvraging per pad, maximaal 8 KB, inhoud nooit opgeslagenR9cfg/dateien_lib.php
Tweede probe: standaard uitgeschakeld; zou alleen een vaste lijst onschuldige gegevens ontvangen, ondertekendOntvangerscfg/formular_probe_lib.php
Scan achter de login: alleen een geverifieerd domein, betaald abonnement, eigenaar of beheerder, bevestiging “testaccount”; versleuteling met de openbare sleutel van de scanserver, gebonden aan het domein; inloggegevens nooit weergegeven, gelogd of via de API uitgegeven; overdracht alleen via de standaardinvoer; veld in de taak onmiddellijk gewist, restanten na één uur; geen schermafbeeldingen, geen verzendingen, geen afmeld- of verwijderadressen, afbreken bij CAPTCHA; definitieve verwijdering met overschrijvenR8cfg/login_lib.php; scanner/src/login.js; scanner/src/geheim.js; scanner/src/worker.js
Bezorgingscontrole: standaard uitgeschakeld; ophaling leest alleen headers en 8 KB, zonder leesmarkering; inhoud en bezoekersadres nooit in de database; elke opgehaalde e-mail wordt verwijderd, ook niet-toewijsbare; toewijzingen na 180 dagen verwijderd; bewijs alleen via de kopie van precies deze testR1, R2cfg/zustellung_lib.php
Zwermbescherming: alleen domeinen, IP-netwerken uit; minimumaantallen; uitzonderingen voor grote diensten en klantdomeinen; quarantaine in plaats van verwijdering; lijst dagelijks opnieuw opgebouwd; meldingen na 30 dagen verwijderdR11cfg/swarm_lib.php
Taalmodel op onze eigen server, zonder het recht om te verzendenR10scanner/src/classify.js
Signalen via Telegram bevatten alleen een vaste zin zonder variabelenOntvangerscfg/check_lib.php
Wekelijkse hersteltest van de back-up, met melding bij mislukkingBeschikbaarheidcfg/backup_lib.php; srv/cron_status.php

9.2 Gedeeltelijk – aanwezig, maar bereikt het doel nog niet

MaatregelWaarom zij nog niet volledig effectief is
“Opgeschoonde” schermafbeeldingenAlleen de afbeeldingen van browsertrajecten worden zwart gemaakt. De afbeeldingen van de crawler – startpagina en formulierelementen – en de afbeelding van de antwoordpagina van een actieve controle niet (R3).
Termijnen voor controlegegevensEffectief voor anonieme, prospect- en klantcontroles; niet voor interne controles en niet-gepubliceerde onderzoeken; niet-afgehandelde afwijkingsnotities zonder termijn (R4).
Verwijdering van de controlekopieënEffectief in ons zicht op de mailbox. Als de run afbreekt, blijven e-mails staan; wat de mailboxprovider in eigen back-ups bewaart, is niet geverifieerd (R2).
Bescherming van inloggegevens bij de scan achter de loginSterk in rust en in de controledienst; niet op weg naar de website: http is toegestaan, certificaatfouten worden genegeerd (R8).
Bewijs van zeggenschapWordt één keer gecontroleerd en geldt daarna voor altijd; de hostnaam van een domein met bewijs van zeggenschap kan echter niet worden gewijzigd, zodat het bewijs niet op een andere host overgaat (R7).
Informatie aan betrokkenenAanwezig voor beheerders via de crawlerpagina, de identificatie, de Privacyverklaring en de opt-out; voor bezoekers bij de bezorgingscontrole afhankelijk van de vraag of de Klant het tekstblok overneemt; de applicatie controleert dit niet.
Verzoek aan Klanten om geen bijzondere categorieën in de controlekopie te laten komenVermeld in de juridische documenten, maar technisch niet ondersteund: bij de inrichting vraagt de applicatie niet naar het type website en waarschuwt zij niet bij domeinen die op gezondheid, recht of onderwijs lijken (R1).

9.3 Gepland – niet geïmplementeerd

MaatregelPakt aanPrioriteit
Verwijderroute voor interne controles: controles zonder domein en zonder rapport na een vaste termijn verwijderen (voorstel: 30 dagen); de ruwe gegevens van een onderzoek uiterlijk een vaste termijn na afronding verwijderen, ook zonder publicatie (voorstel: 90 dagen); de bestaande 85 controles met 369 afbeeldingen eenmalig verwijderenR4Eerst
De bezorgingscontrole pas vrijgeven zodra de overeenkomst met de mailboxprovider is gesloten, opslaglocaties, subverwerkers en back-uptermijnen zijn gedocumenteerd, het doorgiftemechanisme voor de mailboxprovider is opgehelderd en de MX-records van ons domein rechtstreeks naar de mailbox verwijzen; tot die tijd de functie in het productiesysteem geblokkeerd houdenR2Eerst
De beveiliging van de mailboxophaling op het productiesysteem controleren en documenteren voordat de bezorgingscontrole wordt vrijgegevenR2Eerst
Scan achter de login alleen via https en met een geldig certificaat; http-adressen weigeren; certificaatfouten bij het inloggen als reden om af te brekenR8Eerst
Waarden van verborgen velden achter de login niet opslaan (alleen naam, type en lengte) – al zo geïmplementeerd, geen verdere stapR8Gereed
De controlekopie beperken tot testberichten waar de plug-in of de extensie in gebruik is: blinde kopie alleen voor verzendingen met onze test-identificatiecodeR1Hoog
Het afzenderdomein van echte berichten niet opslaan en niet in meldingen opnemen als het noch het domein van de website noch dat van een bekende verzenddienst is; in de melding in plaats daarvan “vreemd afzenderdomein”R1Hoog
Waarschuwing bij het inrichten van de bezorgingscontrole voor domeinen die op gezondheid, recht, sociale diensten of onderwijs lijken, met verwijzing naar de eigen GEB van de KlantR1Hoog
Bewijs van zeggenschap regelmatig vernieuwen (voorstel: vóór elke actieve controle nagaan of het DNS-record, de metatag, het bestand of de plug-inkoppeling nog bestaat; anders passief doorgaan en de Klant op de hoogte brengen)R7Hoog
De startpagina niet meer fotograferen, of alleen met zwart gemaakte afbeeldingen en gezichten; formulierafbeeldingen beperken tot het formulierelement (zoals nu) en invoervelden maskeren zoals bij browsertrajectenR3Hoog
Melding in de interface van de prospectcontrole: het ongevraagd per e-mail of telefoon versturen van de korte bevinding is ook tussen ondernemingen direct marketing en vereist voorafgaande toestemming (Art. 398 van de Poolse wet op de elektronische communicatie; in Duitsland § 7(2) UWG, waarbij voor telefoontjes naar ondernemingen veronderstelde toestemming volstaat)R6Hoog
Infrastructuur: de beveiliging van het serverbeheer voltooien; versleutelde kopie van de back-up op een tweede locatie; verbindingen in het interne netwerk overal versleutelen; de scheiding tussen scanserver en applicatie verder versterkenR13Hoog
Termijn voor niet-afgehandelde afwijkingsnotities (voorstel: afhandeling binnen 30 dagen, anders verwijdering van het IP-adres)R4Middel
Een pagina of formulier waarmee iemand de verwijdering van een domein uit de zwermbescherming kan aanvragenR11, R14Middel
Vóór het inschakelen van IP-netwerken in de zwermbescherming: een nieuwe versie van deze beoordelingR11Voorwaarde
Vastleggen of de taalmodelsoftware aanvragen opslaat en, zo ja, deze logboeken uitschakelenR10Laag

9.4 Nog vast te stellen procedures en beslissingen

Naast technische waarborgen vereist Art. 35(7)(d) ook procedures. Deze staan nog uit:

  • Inbreuk in verband met persoonsgegevens. Detectie: de eigenaar, de foutmelding van de applicatie, meldingen via het meldpunt voor kwetsbaarheden of contact@lukaswojcik.com. Besluit over de melding aan UODO binnen 72 uur (Art. 33(1)): de eigenaar. Informeren van getroffen Klanten als verwerkingsverantwoordelijken: zonder onnodige vertraging, zo mogelijk binnen 48 uur, zoals toegezegd in de Verwerkersovereenkomst. Nog vast te stellen: een schriftelijke procedurebeschrijving en een eerste oefening; voor de bezorgingscontrole daarnaast hoe wordt vastgesteld welke Klanten door een inbreuk bij de mailboxprovider worden getroffen.
  • Sectoren. Nog vast te stellen: of de bezorgingscontrole voor websites uit de gezondheidszorg, de rechtspraktijk, de sociale dienstverlening en het onderwijs wordt aangeboden, met een waarschuwing wordt aangeboden of wordt uitgesloten.
  • Interne controles. Nog vast te stellen: waarvoor de aanbieder interne controles via de opdrachtregel gebruikt, wie ze mag aanmaken en hoe lang de resultaten bewaard blijven; en of ze naast het Register van verwerkingsactiviteiten ook in de Privacyverklaring moeten worden genoemd.
  • Onderzoeken. Nog vast te stellen: wie lijsten samenstelt, uit welke bronnen, met welke maximale omvang, en een controle vóór elk onderzoek of het voldoet aan de uitgangspunten van deze beoordeling.
  • Standpunten van betrokkenen (Art. 35(9)). Voor deze versie zijn die niet gevraagd. Art. 35(9) vereist dat zij alleen “in voorkomend geval” worden gevraagd; naar ons oordeel is dat hier momenteel niet het geval. Beheerders van gecontroleerde websites en bezoekers van websites van Klanten hebben geen eigen kanaal naar ons; hen gericht benaderen zou zelf een nieuwe verwerking van hun gegevens zijn, en de dienst is nog niet gelanceerd, zodat er nog geen groep van daadwerkelijke betrokkenen is. Met hun belangen wordt indirect rekening gehouden: via robots.txt en opt-out, via de korte termijnen en via het feit dat de inhoud van controlekopieën niet wordt opgeslagen. Bij elke herziening volgens paragraaf 12 bekijken wij opnieuw of het vragen van hun standpunten passend is, bijvoorbeeld via feedback op de crawlerpagina of van Klanten van de bezorgingscontrole.

10. Restrisico en voorafgaande raadpleging op grond van Art. 36

Art. 36(1) vereist een voorafgaande raadpleging van de toezichthoudende autoriteit wanneer uit de GEB blijkt dat de verwerking een hoog risico zou opleveren indien de verwerkingsverantwoordelijke geen maatregelen neemt om het risico te beperken. De vraag is dus niet of er hoge risico's zijn vastgesteld – dat zijn er vier – maar of er een hoog risico overblijft wanneer de maatregelen zijn getroffen.

Voor de verwerkingen waarvoor formexposed verwerkingsverantwoordelijke is (P1 tot en met P4, P7), zijn de hoge risico's R4 en R13 met gewone middelen te verhelpen: een verwijderroute en een opschoning van de bestaande gegevens, een versleutelde externe back-up en de beveiliging van twee servers. Met de maatregelen uit 9.3 dalen zij naar laag tot middel. R3, R5, R6 en R7 staan op middel en dalen met de voorgestelde maatregelen naar laag. De zwermbescherming zonder IP-netwerken blijft laag tot middel. Een voorafgaande raadpleging is voor dit deel niet aangewezen als de met “eerst” en “hoog” gemarkeerde maatregelen vóór de lancering zijn geïmplementeerd. Als een van deze maatregelen vóór de lancering niet is geïmplementeerd, blijft er voor de betreffende verwerking een hoog risico bestaan. Die verwerking wordt dan pas gestart zodra de maatregel is geïmplementeerd, of UODO wordt eerst geraadpleegd op grond van Art. 36(1).

Voor de bezorgingscontrole (P6) ligt het anders, om een reden die geen enkele maatregel volledig wegneemt: wat een bezoeker schrijft, bepaalt hij of zij zelf. Met een gesloten overeenkomst, een beveiligde ophaling, beperking tot testberichten waar mogelijk en het afzien van het afzenderdomein daalt R2 naar laag en R1 naar middel. Voor Klanten van wie de bezoekers typisch gegevens in de zin van Art. 9 verstrekken, kan R1 niettemin hoog blijven. De raadplegingsplicht ligt dan bij de Klant als verwerkingsverantwoordelijke, niet bij formexposed. Onze aanbeveling aan zulke Klanten is de controlekopie niet in te stellen voor het algemene contactformulier, maar alleen voor formulieren zonder gevoelige inhoud, of af te zien van de bezorgingscontrole.

Restrisico, eerlijk vermeld. Vandaag, met de maatregelen uit 9.1, staan vier risico's op hoog: R1 en R2 (bezorgingscontrole), R4 (controlegegevens zonder verwijderroute) en R13 (infrastructuur). Met de maatregelen uit 9.3 dalen R2, R4 en R13 naar laag tot middel. R1 blijft op middel en blijft blijvend afhankelijk van beslissingen van Klanten. Geen van de overige risico's ligt na de maatregelen boven middel.

Art. 36 is geen straf, en raadplegen is geen bekentenis. Het is de route die de verordening biedt voor de situatie waarin een nuttige werkwijze een risico met zich meebrengt dat de verwerkingsverantwoordelijke niet volledig beheerst. Een Klant die de bezorgingscontrole wil gebruiken voor berichten met gezondheidsgegevens, vindt hier de feiten voor die beslissing.

11. Wat Klanten nodig hebben voor hun eigen GEB (Art. 28(3)(f))

Voor de bezorgingscontrole en de scan achter de login is de Klant de verwerkingsverantwoordelijke. Deze pagina levert hem de beschrijving (paragrafen 6.5 en 6.6), de risico's vanuit ons perspectief (R1, R2, R8) en de status van de maatregelen (paragraaf 9). Alleen de Klant kan de volgende vragen beantwoorden:

  1. Wat schrijven mijn bezoekers? Is te verwachten dat via het formulier gegevens over gezondheid, godsdienst, afkomst, lidmaatschap van een vakbond, seksuele gerichtheid, strafbare feiten of over kinderen binnenkomen? Dan is een GEB voor de controlekopie in de regel vereist, en moet de controlekopie voor dit formulier worden heroverwogen.
  2. Heb ik de controlekopie voor alle berichten nodig? Om aan te tonen dat ons testbericht aankomt, volstaat zij voor dat bericht. Waar het formulier dat toelaat, stelt u de blinde kopie alleen voor testberichten in.
  3. Hoe informeer ik mijn bezoekers? De Verwerkersovereenkomst vereist dit; de Privacytekst voor uw website beschrijft de route van de kopie en onze rol.
  4. Welke rechtsgrond heb ik? Onze voorbeeldtekst noemt Art. 6(1)(f) (betrouwbare ontvangst van aanvragen). Voor gegevens in de zin van Art. 9 volstaat deze grondslag alleen niet.
  5. Welke meldingskanalen kies ik? Meldingen van de echtheidscontrole kunnen het afzenderdomein noemen. Wie meldingen naar chatdiensten buiten de EU stuurt, geeft het daarheen door.
  6. Voor de scan achter de login: Is het testaccount werkelijk een testaccount met de minst noodzakelijke rechten? Is de inlogpagina alleen via https bereikbaar? Ziet het testaccount gegevens van andere gebruikers? Zo ja: op welke van de opgegeven pagina's?
  7. Wanneer verwijder ik? De bezorgingscontrole en het testaccount kunnen op elk moment worden uitgeschakeld en verwijderd; het testaccount wordt dan definitief overschreven.

Verdere documenten voor de beoordeling van de Klant: de Verwerkersovereenkomst, de technische en organisatorische maatregelen, de lijst van subverwerkers en het Register van verwerkingsactiviteiten. Vragen over afzonderlijke feiten beantwoorden wij via contact@lukaswojcik.com.

12. Herziening, versie en goedkeuring

Art. 35(11) vereist een toetsing om te beoordelen of de verwerking overeenkomstig de GEB wordt uitgevoerd, ten minste wanneer het risico verandert. Wij toetsen deze beoordeling ten minste jaarlijks en daarnaast vóór elk van de volgende gebeurtenissen; elke gebeurtenis leidt tot een nieuwe meting, niet alleen tot herlezing:

  • start van de productie, met cijfers van het productiesysteem in plaats van het ontwikkelsysteem;
  • eerste activering van de bezorgingscontrole op het productiesysteem en sluiting van de overeenkomst met de mailboxprovider;
  • inschakelen van IP-netwerken in de zwermbescherming;
  • het eerste onderzoek, en elk onderzoek met een grotere lijst dan het vorige;
  • inschakelen van de tweede probe of een nieuwe ontvanger in het controlepad;
  • elk nieuw gebruik van het taalmodel dat verder gaat dan de classificatie van formulieren en “Fix it for me”;
  • elke wijziging van de schermafbeeldingen, de termijnen of de voorwaarden voor actieve controles.
OnderdeelInvulling
VerwerkingsverantwoordelijkeLW IT Solutions Company Lukas Wójcik, al. Tadeusza Kościuszki 80/82, lok. 301, 90-437 Łódź, Polen · NIP 7252266190 · contact@lukaswojcik.com
Bevoegde toezichthoudende autoriteitPrezes Urzędu Ochrony Danych Osobowych (UODO), ul. Moniuszki 1A, 00-014 Warszawa, Polen
Functionaris voor gegevensbeschermingNiet aangewezen; beoordeling op grond van Art. 37 in paragraaf 4
Basis van de feitenBroncode van de applicatie en de controledienst, databaseschema, rijtellingen en instellingen van het ontwikkelsysteem, gemeten op 11 oktober 2026, alleen-lezend
Samenhangende documentenPrivacyverklaring, Verwerkersovereenkomst, Technische en organisatorische maatregelen, Subverwerkers, Register van verwerkingsactiviteiten, EU AI-verordening, Aanvaardbaar gebruik en misbruik, FormExposedBot, Opt-out
Versie1.0 van 11 oktober 2026, eerste versie
Toetsingen op grond van Art. 35(11)Nog geen (eerste versie). Elke toetsing wordt hier vermeld met datum, aanleiding en resultaat.
GoedkeuringNog niet goedgekeurd. Goedkeuring door de eigenaar na juridische toetsing en na een besluit over de maatregelen uit paragraaf 9.3 en de vragen uit paragraaf 9.4. Extern advies over gegevensbescherming is tot nu toe niet ingewonnen.

Eén slotopmerking hoort in het document thuis en niet in een begeleidende brief. De onderdelen van formexposed die het verst in andermans domein ingrijpen – de testverzendingen en het inloggen met de inloggegevens van een ander – zijn met de meeste voorzichtigheid gebouwd: twee poorten, harde limieten, versleuteling die zelfs ons buitensluit. De risico's in deze beoordeling liggen grotendeels elders: in wat incidenteel meekomt – echte berichten in een blinde kopie, mensen in een schermafbeelding, controles die niemand meer verwijdert. Dat is een gunstige uitgangspositie, want het incidentele kan worden gestopt zonder de dienst te veranderen.