Zo controleer je of je bestanden niet worden geüpload
Al deze sites zeggen dat ze privé werken. Hoe controleer ik dat nou echt?
Begin bij de juiste aanname
Een privacybelofte op een marketingpagina is geen bewijs. Een hangslotpictogram, een keurmerk of een zin in een privacyverklaring evenmin – die beschrijven een intentie, en wat jij wilt weten is gedrag. Gelukkig is gedrag waarneembaar: elke browser levert tools mee die je precies laten zien wat een pagina verstuurt, en je hoeft geen ontwikkelaar te zijn om dat te lezen.
Voer deze controles uit op deze site. Voer ze uit op de site die je hiervoor gebruikte. Het doel is niet om een andere bewering te vertrouwen; het doel is dat je er geen meer hoeft te vertrouwen.
Controle één: kijk mee in het netwerkpaneel
- Open de ontwikkelaarstools. In de meeste desktopbrowsers is dat F12, of Ctrl+Shift+I, of Cmd+Option+I.
- Kies het tabblad Network en zorg dat de opname aanstaat.
- Herlaad de pagina en wis daarna de lijst, zodat je met een leeg logboek begint.
- Kies je bestand en voer de bewerking uit.
- Sorteer op grootte, of kijk in de kolom Method naar POST- en PUT-verzoeken.
Je zoekt naar elk verzoek waarvan de payload in de orde van grootte van je bestand ligt, en naar elk verzoek überhaupt naar een host die niet de site is waarop je zit. Een lokale tool laat verzoeken zien voor zijn eigen code – scripts, stylesheets, WebAssembly-modules, misschien een modelbestand – en daarna niets meer terwijl het werk draait. Een uploader laat op het moment dat je op de knop drukt een verzoek zien dat enkele megabytes meedraagt.
Controle twee: haal het netwerk weg
Dit is de sterkste controle, en er is geen enkele kennis voor nodig. Laad de pagina normaal, gebruik de tool één keer zodat een eventuele engine in de cache komt, en verbreek dan de verbinding: zet de vliegtuigmodus aan, schakel wifi uit of gebruik de offlineschakelaar in de ontwikkelaarstools. Verwerk nu een bestand.
Als dat lukt, kan de verwerking nergens anders hebben plaatsgevonden dan op jouw machine. Daar valt niets aan te interpreteren. Mislukt het of blijft het hangen, dan had iets in de pijplijn een server nodig – dat kan legitiem zijn, bijvoorbeeld een modelbestand dat nog niet in de cache stond, maar nu weet je dat je moet vragen wat het was.
Controle drie: lees de content security policy
Een content security policy is een header die de site meestuurt en die de browser afdwingt. De directive connect-src somt de bestemmingen op waarnaar de pagina een verbinding mag openen. Beperkt connect-src zich tot de eigen origin van de site, dan blokkeert de browser zelf elke poging om iets ergens anders naartoe te sturen, wat de code van de pagina ook probeert.
Om hem te lezen open je het tabblad Network, klik je op het documentverzoek – meestal de eerste regel – en kijk je in de responseheaders naar Content-Security-Policy. Een beleid met connect-src 'self' en zonder externe hosts is een betekenisvolle beperking die de browser afdwingt, geen belofte.
Wat elke controle bewijst
| Controle | Wat het bewijst | Wat het niet afdekt |
|---|---|---|
| Netwerkpaneel | Wat deze pagina tijdens deze sessie heeft verstuurd | Een ander codepad, een latere versie van de site, of een verzoek dat is gedaan nadat je stopte met kijken |
| Offlinetest | Dat de verwerking zelf lokaal draait | Of er iets in de wachtrij staat dat wordt verstuurd zodra je weer verbinding maakt |
| Content security policy | Waarheen de browser überhaupt verbindingen toestaat | Alles wat het beleid toestaat, inclusief de eigen origin van de site |
| De broncode lezen | Wat de uitgeleverde code bevat | De moeite; en het moet opnieuw zodra de site verandert |
Samen zijn ze sterk. Afzonderlijk heeft elke controle een gat, en wie beweert dat één controle de vraag beslecht, versimpelt de zaak.
Signalen dat een tool niet lokaal werkt
- Een voortgangsbalk die beweegt op een snelheid die niets met jouw apparaat te maken heeft – vloeiend en identiek op een snelle laptop en op een oude telefoon.
- Een resultaat dat wordt geleverd als link naar een download-URL op hun domein, in plaats van als een bestand dat je browser al vasthoudt.
- Een melding dat bestanden na een aantal uur van hun servers worden verwijderd. Die zin is een bekentenis dat de bestanden daar stonden.
- Een wachtrij of een limiet op het aantal bewerkingen. Je eigen processor heeft geen wachtrij die je met anderen deelt.
- De tool werkt zonder netwerkverbinding alleen voor het eerste kleine bestand en houdt daarna op.
De grenzen van verificatie
Verificatie vertelt je iets over de versie van de site die je hebt getest, op de dag dat je die testte. Een site kan morgen veranderen. Daarom zijn de controles die het zwaarst wegen de structurele: een restrictieve content security policy en een werkende offlinetest zijn eigenschappen van hoe de applicatie is gebouwd, geen beloftes over één bepaalde release.
Twee dingen blijven buiten elke controle in deze lijst. Een browserextensie kan de inhoud van elke pagina lezen, inclusief het bestand dat je erin hebt geladen, en geen enkele site kan dat voorkomen. Je besturingssysteem kan elk bestand zien dat je opent. Is een document gevoelig genoeg dat dit uitmaakt, verwerk het dan in offlinesoftware op een machine die je zelf beheert, en beschouw elke website – ook deze – als het verkeerde gereedschap voor die klus.
Tools hiervoor
Bronnen
- W3C — Content Security Policy Level 3
- MDN — Content-Security-Policy connect-src
- Chrome DevTools — inspect network activity
- MDN — Firefox Network Monitor