Een onveilig downloadformulier voor klantdocumenten
7 november 2026 · 6 min leestijd · Marketing Scan
In dit artikel
Wat je precies onderzoekt
Een downloadformulier bestaat uit drie delen die elk apart kunnen falen: de toegang (wie mag het bestand zien), de bestands-URL (hoe wordt het bestand aangeboden) en het vervalpad (wanneer verdwijnt de toegang). Een veilig formulier met een onveilige URL blijft een lek.
MDN beschrijft in de webbeveiligingsgids van MDN dat de te overwegen dreigingen sterk afhangen van wat je site precies doet. Het risico waar deze gids op mikt is Insecure Direct Object Reference (IDOR): toegang tot gegevens via een rechtstreeks verwijzende identifier die de server niet tegen rechten controleert. Voor jouw situatie bepaal je zelf welke bestanden gevoelig zijn, bijvoorbeeld identiteitsdocumenten, offertes of contracten.
Diagnose: hoe herken je een voorspelbare of openbare link
Doe de volgende controles met testbestanden, nooit met echte klantdocumenten.
- Upload twee testbestanden na elkaar en vergelijk de twee URL's. Verschillen ze alleen in een oplopend nummer of een datum? Dan is de link voorspelbaar.
- Kopieer de bestands-URL en open die in een privévenster zonder ingelogde sessie. Krijg je het bestand? Dan hangt de toegang alleen aan de kennis van de link.
- Pas in de URL een cijfer of tekendeel aan, met alleen je eigen testbestanden. Krijg je een ander testbestand zonder dat je daarvoor rechten hebt? Dan ontbreekt een toegangscontrole. Een afwijkende foutmelding ten opzichte van een niet-bestaande URL kan wijzen op informatielekkage.
- Zoek in de paginabron en in je bevestigingsmails of de link ergens zichtbaar staat, bijvoorbeeld in een openbaar bereikbare bedankpagina.
- Zoek in Google naar de mapnaam of bestandsnaam van je uploads met een site-zoekopdracht op je domein. Een leeg resultaat bewijst niets, een treffer is wel een duidelijk signaal.
Let op: een browsertest bewijst niet wat een zoekmachine kan crawlen. Dat hangt af van robots.txt en van waar de link openbaar staat.
Beslisregels per bevinding
Gebruik dit beslisblad om een bevinding te vertalen naar een actie.
| Bevinding | Aanpak |
|---|---|
| Bestand opent zonder inlog in privévenster | Laat de server de toegang controleren vóór het bestand wordt uitgeleverd |
| URL bevat oplopend nummer | Vervang door een niet te raden identifier en controleer toch altijd de rechten |
| Link staat in mail zonder vervaldatum | Laat de link verlopen en vraag bij een nieuwe aanvraag een nieuwe link |
| Bestand staat in een openbare map | Verplaats het naar opslag die niet rechtstreeks via het web bereikbaar is |
| Bestand verschijnt in zoekresultaten | Zet toegang dicht en volg de verwijderprocedure van de zoekmachine; uitkomst blijft onzeker qua timing |
Een niet te raden naam is een extra laag, geen vervanging van een toegangscontrole.
Toegang en inloggen: wat je vraagt aan de beheerder
Als klanten moeten inloggen om documenten te halen, zijn zwakke accounts de volgende zwakke plek. MDN raadt aan om niet alleen op wachtwoorden te vertrouwen: passkeys zijn volgens die gids de veiligste methode en tijdgebonden eenmalige codes (TOTP) zijn veiliger dan een gewoon wachtwoord. Voor je eigen beheerdersaccounts toont de hulppagina van Google over tweestapsverificatie hoe zo'n extra stap werkt bij een Google-account. Dat is een voorbeeld van het principe, geen instelling voor jouw formulier. Let op: volgens die pagina zijn codes via sms of telefoontje kwetsbaarder voor aanvallen op telefoonnummers dan andere methoden.
Vraag je webbouwer of platformleverancier schriftelijk: welke inlogmethoden ondersteunt het systeem voor klanten en voor beheerders, worden sessiecookies beperkt met de attributen Secure en HttpOnly, en hoe lang blijft een ingelogde sessie geldig? Waar je dit instelt verschilt per systeem, dus laat de beheerder het aanwijzen in plaats van het te raden.
Fictief overdrachtsvoorbeeld voor je webbouwer
Fictieve invoer: een kmo laat klanten een offerte-aanvraag met bijlage insturen. Testbestand A krijgt de URL met eindcijfer 0041, testbestand B eindcijfer 0042. In een privévenster opent link A zonder inlog.
Verwachte technische controles na aanpassing, als opdracht aan de bouwer:
- Link A en B zijn niet uit elkaar af te leiden.
- Een privévenster zonder sessie krijgt een weigering, geen bestand.
- Een tweede testaccount kan het bestand van het eerste testaccount niet openen.
- Een link in een oudere mail geeft na de afgesproken vervaltermijn geen bestand meer.
- De uploadmap is niet rechtstreeks via een URL bereikbaar.
Laat de bouwer per punt noteren hoe getest is. Dit voorbeeld bevat bewust geen resultaten: die moet jouw eigen test opleveren.
Controle na wijziging en grenzen van deze gids
Herhaal na elke wijziging de vijf diagnosestappen met nieuwe testbestanden en noteer datum, tester en uitkomst. Herhaal ze ook na een update van je website-platform of formulierplug-in, omdat standaardinstellingen kunnen veranderen.
Grenzen: deze gids vervangt geen beveiligingsaudit of penetratietest en zegt niets over wettelijke naleving, bijvoorbeeld rond persoonsgegevens. Bij bijzonder gevoelige documenten raadpleeg je een specialist. Een publieke scan van je website kan alleen zichtbare signalen bekijken en bewijst niet hoe uploads server-side beschermd zijn. Wil je weten welke publieke signalen je site nu toont? Bekijk ze via Marketing Scan, zonder dat dit de controles hierboven vervangt.
Veelgestelde vragen.
Is een lange, willekeurige bestandsnaam genoeg als bescherming?
Nee, het is hoogstens een extra laag. Wie de link krijgt, bijvoorbeeld via een doorgestuurde mail, kan het bestand dan nog steeds openen. Laat de server daarom altijd de toegang controleren en laat links verlopen.
Hoe test ik zonder echte klantdocumenten te riskeren?
Maak testbestanden met neutrale inhoud en een eigen testaccount, en upload die via hetzelfde formulier. Open de links in een privévenster en met een tweede testaccount. Zo zie je of toegang afhangt van de sessie of alleen van de link.
Bewijst een privévenster dat zoekmachines het bestand niet kunnen zien?
Nee. Een browser negeert robots.txt en een zoekmachine volgt andere regels, bovendien hangt vindbaarheid af van waar de link openbaar staat. Gebruik een site-zoekopdracht en de URL-inspectie in Search Console als aanvullende signalen, en beschouw de uitkomst als onzeker.
Wat doe ik als een testbestand toch publiek bereikbaar blijkt?
Sluit eerst de toegang op de server en vervang de link. Controleer daarna of de oude URL nog een bestand levert en of hij elders openbaar staat. Wil je het uit zoekresultaten, volg dan de verwijderopties van de zoekmachine; hoe snel dat gaat kun je niet vooraf zeggen.
Bronnen bij dit artikel
Hoe werkt een marketing scan? Meetmethode en grenzen
Van advies naar actie voor jouw website
Maak een gratis account voor één website. Controleer zes kenmerken van je homepage en bekijk maximaal drie bevindingen.
Herhaal de check handmatig één keer per zeven dagen. Voor volledige audits en automatische opvolging is uitgebreide toegang nodig.
Maak je gratis account