Strona HTTPS, która wczytuje skrypty przez HTTP, wykonuje dwa żądania z dwoma różnymi poziomami ochrony, a kłódka opisuje tylko pierwsze z nich. Tunel tego nie zmienia, bo chroni nośnik, a nie własny schemat zasobu. Przeglądarka już mówi, które żądanie zawiodło, jeśli czytasz konsolę zamiast paska adresu. Trzy kontrole prowadzą od częściowo działającej strony do rzeczywistej naprawy.

Czytaj żądanie, nie pasek adresu

Dokument pobrany przez HTTPS może odwoływać się do skryptu, arkusza stylów, czcionki lub ramki przez zwykły HTTP. To odwołanie jest osobnym żądaniem i właśnie na nie skarży się przeglądarka. Ochrona głównego dokumentu nie przenosi się wstecz do niego, a tunel przenoszący oba strumienie nie zmienia żadnego z obu schematów. Strona może więc być jednocześnie naprawdę bezpieczna i naprawdę zepsuta.

Nazwanie zasobu po prostu dołączonym plikiem nie czyni jego podmiany nieszkodliwą.

Jeśli niezabezpieczoną treść skryptu można zmienić w drodze, a potem wykonać, może ona zmienić zachowanie strony, co jest większym problemem niż usterka kosmetyczna. Obrazy niosą mniejsze, ale realne ryzyko, gdy są modyfikowane po drodze. Kłódka nie kłamie w żadnej sprawie. Odpowiada na węższe pytanie niż to, które jej zadałeś.

Wiedz, które zasoby są blokowane, a które podnoszone

Przeglądarki nie traktują każdego typu zasobu tak samo. wytyczne dotyczące mieszanej zawartości oddzielają żądania podnoszone do HTTPS od żądań blokowanych całkowicie: skrypty, arkusze stylów i żądania programowe są po stronie blokowanej, a obrazy i multimedia mogą zamiast tego zostać podniesione lub oznaczone.

Ta różnica wyjaśnia mylące raporty. Strona z zablokowanym skryptem traci funkcję całkowicie, a strona z podniesionym obrazem wygląda dobrze i po cichu zmieniła swoje żądanie. Udokumentowane kategorie mają też wyjątki, więc nie zakładaj, że każdy URL danego typu zostanie pomyślnie podniesiony. Czytaj, co konsola mówi o konkretnym żądaniu, zamiast wnioskować z rozszerzenia pliku.

Zablokowany widżet nie jest dowodem, że tunel zawiódł. To dowód, że przeglądarka wykonała swoją pracę.

Napraw odwołanie u jego źródła

Dla właściciela witryny naprawa należy do miejsca, w którym zapisano niezabezpieczony URL: szablonu, arkusza stylów, skryptu składającego adresy URL albo komponentu firmy trzeciej. Zmiana widocznego adresu strony pozostawia to wszystko nietknięte. Przeszukaj źródło pod kątem hosta i napraw każde odwołanie, a nie tylko to jedno, które konsola przypadkowo wskazała.

Następnie potwierdź, że zasób jest rzeczywiście serwowany przez HTTPS z ważną tożsamością, ponieważ zamiana schematu nie może wyczarować usługi, która nigdy nie została tam opublikowana.

grep -rn "http://assets.example" ./templates
curl -sSI https://assets.example/widget.js | head -n 1

Śledź także przekierowania, ponieważ odwołanie zaczynające się od HTTPS wciąż może trafić na ścieżkę dostarczania zwykłym tekstem. Gdy zależność po prostu nie ma dostępnego bezpiecznego dostarczania, usuń ją lub zastąp w zwykłym procesie zmian, zamiast dostarczać obejście. Dla użytkownika pozostaw ochrony przeglądarki włączone i zgłoś właścicielowi witryny URL zasobu, jego typ i komunikat konsoli. Nigdy nie rozpowszechniaj instrukcji każących personelowi zezwolić na niezabezpieczoną treść dla jednej strony, ponieważ ten wyjątek przeżywa incydent, który go wywołał.

Przetestuj stronę ponownie tak, jak dotykają jej użytkownicy

Przećwicz operacje, które wczytują zasoby na żądanie, nie tylko pierwszy dokument. Strony pobierają dodatkowy kod, dane i pliki do pobrania po naciśnięciu przycisku, a te żądania są często tymi niezabezpieczonymi. Potwierdź konkretne żądania i widoczne zachowanie przy nadal włączonej ochronie. Test, który zaczyna się od poluzowanego profilu przeglądarki, nie pokaże ci, co widzi zwykły użytkownik.

Tunel nadal ma swoje własne zadanie, a tym zadaniem jest dostęp sieciowy, a nie integralność strony.

Gdy ruch opuści punkt końcowy tunelu, żadne pozostałe pobieranie HTTP niczego nie zyskało od nośnika. Napraw ścieżkę zasobu i zachowaj egzekwowanie w przeglądarce. Traktowanie kolejnej warstwy transportowej jako naprawy niezabezpieczonej zależności to droga, na której zespół kończy ze skryptem pomocy technicznej, który wyłącza kontrolę działającą poprawnie.

Powiązane artykuły