Jak sprawdzić, że twoje pliki nie są wysyłane
Każda taka strona twierdzi, że jest prywatna. Jak to naprawdę zweryfikować?
Zacznij od właściwego założenia
Deklaracja prywatności na stronie marketingowej nie jest dowodem. Nie jest nim też ikona kłódki, plakietka ani zdanie w polityce prywatności — to opisy intencji, a ty chcesz wiedzieć o zachowaniu. Na szczęście zachowanie da się obserwować: każda przeglądarka ma wbudowane narzędzia, które pokazują dokładnie, co strona wysyła, i nie trzeba być programistą, żeby to odczytać.
Przeprowadź te testy na tej witrynie. Przeprowadź je na witrynie, z której korzystałeś wcześniej. Nie chodzi o to, żeby zaufać innej deklaracji; chodzi o to, żeby przestać musieć komukolwiek ufać.
Test pierwszy: obserwuj panel sieci
- Otwórz narzędzia deweloperskie. W większości przeglądarek desktopowych to F12, Ctrl+Shift+I albo Cmd+Option+I.
- Przejdź do zakładki Network i upewnij się, że nagrywanie jest włączone.
- Przeładuj stronę, a potem wyczyść listę, żeby zacząć od pustego dziennika.
- Wybierz plik i uruchom operację.
- Posortuj po rozmiarze albo poszukaj w kolumnie Method żądań POST i PUT.
Szukasz żądania, którego ładunek jest rzędu wielkości twojego pliku, oraz jakiegokolwiek żądania do hosta innego niż witryna, na której jesteś. Narzędzie lokalne pokaże żądania po własny kod — skrypty, arkusze stylów, moduły WebAssembly, może plik modelu — a potem, w trakcie pracy, nic. Narzędzie wysyłające pokaże żądanie niosące kilka megabajtów dokładnie w chwili, w której naciskasz przycisk.
Test drugi: odetnij sieć
To najmocniejszy test i nie wymaga żadnej wiedzy technicznej. Załaduj stronę normalnie, użyj narzędzia raz, żeby potrzebny silnik trafił do pamięci podręcznej, a potem odetnij się: włącz tryb samolotowy, wyłącz Wi-Fi albo użyj przełącznika trybu offline w narzędziach deweloperskich. Teraz przetwórz plik.
Jeśli operacja się powiedzie, przetwarzanie nie mogło odbyć się nigdzie indziej niż na twojej maszynie. Nie ma tu miejsca na spór. Jeśli się nie powiedzie albo zawiesi, coś w potoku potrzebowało serwera — co może być uzasadnione, na przykład plik modelu, który nie trafił jeszcze do pamięci podręcznej — ale teraz wiesz, żeby zapytać, co konkretnie.
Test trzeci: przeczytaj politykę Content-Security-Policy
Content Security Policy to nagłówek wysyłany przez witrynę i egzekwowany przez przeglądarkę. Jego dyrektywa connect-src wymienia miejsca, do których strona ma prawo otworzyć połączenie. Jeśli connect-src jest ograniczona do własnej domeny witryny, sama przeglądarka zablokuje próbę wysłania czegokolwiek gdzie indziej, niezależnie od tego, co próbuje zrobić kod strony.
Żeby ją przeczytać, otwórz zakładkę Network, kliknij żądanie dokumentu — zwykle pierwszy wiersz — i poszukaj w nagłówkach odpowiedzi pozycji Content-Security-Policy. Polityka zawierająca connect-src 'self' bez zewnętrznych hostów to realne ograniczenie egzekwowane przez przeglądarkę, a nie obietnica.
Czego dowodzi każdy z testów
| Test | Czego dowodzi | Czego nie obejmuje |
|---|---|---|
| Panel sieci | Co ta strona wysłała w tej sesji | Innej ścieżki w kodzie, późniejszej wersji witryny ani żądania wysłanego po tym, jak przestałeś patrzeć |
| Test offline | Że samo przetwarzanie odbywa się lokalnie | Tego, czy coś czeka w kolejce i zostanie wysłane po ponownym połączeniu |
| Content Security Policy | Dokąd przeglądarka w ogóle pozwoli się połączyć | Wszystkiego, na co polityka pozwala, łącznie z własną domeną witryny |
| Lektura kodu źródłowego | Co zawiera dostarczony kod | Nakładu pracy; trzeba ją powtarzać przy każdej zmianie witryny |
Razem są mocne. Z osobna każdy ma lukę, a kto mówi ci, że jeden test rozstrzyga sprawę, nadmiernie upraszcza.
Sygnały, że narzędzie nie działa lokalnie
- Pasek postępu, który porusza się w tempie niezwiązanym z twoim urządzeniem — płynny i identyczny na szybkim laptopie i na starym telefonie.
- Wynik dostarczony jako link do adresu pobierania w ich domenie, a nie jako plik, który przeglądarka już ma.
- Komunikat o plikach usuwanych z ich serwerów po kilku godzinach. To zdanie jest przyznaniem, że pliki tam były.
- Kolejka albo limit żądań. Twój własny procesor nie ma kolejki dzielonej z innymi ludźmi.
- Narzędzie z odciętą siecią działa tylko dla pierwszego małego pliku, a potem przestaje.
Granice weryfikacji
Weryfikacja mówi ci o tej wersji witryny, którą przetestowałeś, w dniu, w którym ją testowałeś. Witryna może się jutro zmienić. Dlatego najbardziej liczą się testy strukturalne: restrykcyjna polityka Content-Security-Policy i działający test offline to cechy tego, jak aplikacja jest zbudowana, a nie obietnice dotyczące konkretnego wydania.
Dwie rzeczy pozostają poza zasięgiem każdego testu z tej listy. Rozszerzenie przeglądarki może odczytać zawartość dowolnej strony, w tym plik, który do niej wczytałeś, i żadna witryna temu nie zapobiegnie. Twój system operacyjny widzi każdy plik, który otwierasz. Jeśli dokument jest na tyle wrażliwy, że to ma znaczenie, przetwórz go w programie offline na maszynie, którą kontrolujesz, i potraktuj każdą witrynę — łącznie z tą — jako niewłaściwe narzędzie do tego zadania.
Narzędzia do tego zadania
Źródła
- W3C — Content Security Policy Level 3
- MDN — Content-Security-Policy connect-src
- Chrome DevTools — inspect network activity
- MDN — Firefox Network Monitor