Så kontrollerar du att dina filer inte laddas upp
Alla de här sajterna säger att de är privata. Hur verifierar jag det på riktigt?
Börja från rätt antagande
Ett integritetslöfte på en marknadsföringssida är inte bevis. Det är inte en hänglåsikon, en märkning eller en mening i en integritetspolicy heller — de beskriver avsikt, och det du vill veta är beteende. Som tur är går beteende att observera: varje webbläsare har inbyggda verktyg som visar exakt vad en sida skickar, och du behöver inte vara utvecklare för att läsa dem.
Kör de här kontrollerna på den här sajten. Kör dem på sajten du använde tidigare. Poängen är inte att lita på ett annat löfte; poängen är att slippa behöva lita på något alls.
Kontroll ett: håll ögonen på nätverkspanelen
- Öppna utvecklarverktygen. I de flesta skrivbordswebbläsare är det F12, Ctrl+Shift+I eller Cmd+Option+I.
- Välj fliken Network och se till att inspelningen är på.
- Ladda om sidan och rensa sedan listan så att du börjar från en tom logg.
- Välj din fil och kör operationen.
- Sortera efter storlek, eller titta i kolumnen Method efter POST- och PUT-anrop.
Det du letar efter är varje anrop vars nyttolast ligger i samma storleksordning som din fil, och varje anrop över huvud taget till en värd som inte är sajten du befinner dig på. Ett lokalt verktyg visar anrop efter sin egen kod — skript, stilmallar, WebAssembly-moduler, kanske en modellfil — och sedan ingenting medan arbetet pågår. En uppladdare visar ett anrop som bär flera megabyte i samma stund som du trycker på knappen.
Kontroll två: ta bort nätverket
Det här är den starkaste kontrollen, och den kräver ingen sakkunskap alls. Ladda sidan som vanligt, använd verktyget en gång så att den motor det behöver hamnar i cachen, och koppla sedan bort dig: slå på flygplansläget, stäng av wifi eller använd offlinelägets växel i utvecklarverktygen. Bearbeta nu en fil.
Om det går igenom kan bearbetningen inte ha skett någon annanstans än på din maskin. Där finns ingen tvetydighet att diskutera. Om det misslyckas eller hänger sig behövde något i kedjan en server — vilket kan vara legitimt, till exempel en modellfil som ännu inte hunnit cachas, men nu vet du att du ska fråga vilken.
Kontroll tre: läs sajtens content security policy
En content security policy är en header som sajten skickar och webbläsaren upprätthåller. Direktivet connect-src listar de destinationer sidan får öppna en anslutning till. Om connect-src är begränsad till sajtens eget ursprung blockerar webbläsaren själv varje försök att skicka något någon annanstans, oavsett vad sidans kod försöker göra.
För att läsa den öppnar du fliken Network, klickar på dokumentanropet — oftast den första raden — och tittar bland svarsheadrarna efter Content-Security-Policy. En policy som innehåller connect-src 'self' utan externa värdar är en meningsfull begränsning som webbläsaren upprätthåller, inte ett löfte.
Vad varje kontroll bevisar
| Kontroll | Vad den bevisar | Vad den inte täcker |
|---|---|---|
| Nätverkspanelen | Vad den här sidan skickade under den här sessionen | En annan kodväg, en senare version av sajten eller ett anrop som görs efter att du slutat titta |
| Offlinetestet | Att själva bearbetningen sker lokalt | Om något köas och skickas när du kopplar upp dig igen |
| Content security policy | Var webbläsaren över huvud taget tillåter anslutningar | Allt som policyn tillåter, inklusive sajtens eget ursprung |
| Att läsa källkoden | Vad den levererade koden innehåller | Arbetsinsatsen; och den måste göras om varje gång sajten ändras |
Tillsammans är de starka. Var för sig har var och en en lucka, och den som säger att en enda kontroll avgör frågan förenklar.
Tecken på att ett verktyg inte är lokalt
- En förloppsindikator som rör sig i en takt som inte har med din enhet att göra — jämn och identisk på en snabb laptop och på en gammal telefon.
- Ett resultat som levereras som en länk till en nedladdnings-URL på deras domän, i stället för som en fil din webbläsare redan har.
- Ett meddelande om att filer raderas från deras servrar efter ett visst antal timmar. Den meningen är ett erkännande av att filerna var där.
- En kö eller en hastighetsbegränsning. Din egen processor har ingen kö som delas med andra människor.
- Verktyget fungerar utan nätverk bara för den första lilla filen och slutar sedan.
Verifieringens gränser
Verifiering säger något om den version av sajten du testade, den dag du testade den. En sajt kan ändras i morgon. Det är därför de kontroller som betyder mest är de strukturella: en restriktiv content security policy och ett fungerande offlinetest är egenskaper hos hur applikationen är byggd, inte löften om en viss version.
Två saker ligger utanför varenda kontroll på den här listan. Ett webbläsartillägg kan läsa innehållet på vilken sida som helst, inklusive filen du laddat in i den, och ingen sajt kan hindra det. Ditt operativsystem kan se varje fil du öppnar. Om ett dokument är så känsligt att det spelar roll: bearbeta det i offlineprogram på en maskin du kontrollerar, och betrakta varje webbplats — även den här — som fel verktyg för det jobbet.
Verktyg för det här
Källor
- W3C — Content Security Policy Level 3
- MDN — Content-Security-Policy connect-src
- Chrome DevTools — inspect network activity
- MDN — Firefox Network Monitor