Obsługa protokołu HTTPS w witrynie to ważny krok w kierunku ochrony witryny i użytkowników przed atakami, ale treści mieszane mogą sprawić, że ta ochrona będzie bezużyteczna. Przeglądarki będą coraz częściej blokować niezabezpieczone treści mieszane, jak wyjaśniono w artykule Czym są treści mieszane?
W tym przewodniku przedstawimy techniki i narzędzia, które pozwalają rozwiązywać istniejące problemy z treścią mieszaną i zapobiegać powstawaniu nowych.
Znajdowanie treści mieszanych przez odwiedzenie witryny
Gdy odwiedzasz stronę HTTPS w Google Chrome, przeglądarka ostrzega Cię o treściach mieszanych, wyświetlając błędy i ostrzeżenia w konsoli JavaScriptu.
W artykule What is mixed content? (Co to jest treść mieszana?) znajdziesz wiele przykładów i dowiesz się, jak problemy są zgłaszane w Narzędziach deweloperskich w Chrome.
Przykład pasywnej treści mieszanej z ostrzeżeniami.
Jeśli przeglądarka może znaleźć treści pod adresem URL https, automatycznie go uaktualnia, a następnie wyświetla komunikat.
Aktywna treść mieszana jest blokowana i wyświetla się ostrzeżenie.
Jeśli znajdziesz takie ostrzeżenia dotyczące adresów URL http:// w swojej witrynie, musisz je poprawić w kodzie źródłowym witryny.
Warto utworzyć listę tych adresów URL wraz ze stroną, na której zostały znalezione, aby móc je poprawić.
Znajdowanie treści mieszanych w witrynie
Możesz wyszukiwać treści mieszane bezpośrednio w kodzie źródłowym.
Wyszukaj http:// w źródle i znajdź tagi zawierające atrybuty adresu URL HTTP.
Pamiętaj, że obecność http:// w atrybucie href tagów kotwicy (<a>) często nie jest problemem związanym z mieszaną treścią, z pewnymi wyjątkami, które omówimy później.
Jeśli Twoja witryna jest publikowana za pomocą systemu zarządzania treścią, podczas publikowania stron mogą być wstawiane linki do niezabezpieczonych adresów URL. Na przykład obrazy mogą być dołączane z pełnym adresem URL, a nie ze ścieżką względną. Musisz je znaleźć i poprawić w treściach CMS.
Naprawianie treści mieszanych
Gdy znajdziesz treści mieszane w źródle witryny, możesz je poprawić, wykonując te czynności.
Jeśli w konsoli pojawi się komunikat, że żądanie zasobu zostało automatycznie uaktualnione z HTTP do HTTPS, możesz bezpiecznie zmienić adres URL http:// zasobu w kodzie na https://.
Możesz też sprawdzić, czy zasób jest dostępny w bezpieczny sposób, zmieniając http:// na https:// na pasku adresu URL przeglądarki i próbując otworzyć adres URL na karcie przeglądarki.
Jeśli zasób nie jest dostępny przez https://, rozważ jedną z tych opcji:
- Dołącz zasób z innego hosta, jeśli jest dostępny.
- Pobierz treści i umieść je bezpośrednio w swojej witrynie, jeśli masz do tego prawo.
- Całkowicie wyklucz zasób z witryny.
Po rozwiązaniu problemu wyświetl stronę, na której pierwotnie wystąpił błąd, i sprawdź, czy już się nie pojawia.
Uważaj na niestandardowe użycie tagów
Uważaj na niestandardowe użycie tagów w witrynie.
Na przykład adresy URL tagów kotwicy (<a>) nie powodują błędów związanych z treścią mieszaną, ponieważ powodują, że przeglądarka przechodzi na nową stronę.
Oznacza to, że zwykle nie trzeba ich naprawiać.
Jednak niektóre skrypty galerii obrazów zastępują funkcję tagu <a> i wczytują zasób HTTP określony przez atrybut href do wyświetlenia w lightboxie na stronie, co powoduje problem z treściami mieszanymi.
Obsługa treści mieszanych na dużą skalę
Powyższe ręczne czynności sprawdzają się w przypadku mniejszych witryn, ale w przypadku dużych witryn lub witryn z wieloma osobnymi zespołami programistów śledzenie wszystkich wczytywanych treści może być trudne. Aby ułatwić sobie to zadanie, możesz użyć standardu Content Security Policy, który poinstruuje przeglądarkę, aby powiadamiała Cię o treściach mieszanych i zapewniała, że strony nigdy nie będą nieoczekiwanie wczytywać niezabezpieczonych zasobów.
Standard Content Security Policy
Content Security Policy (CSP) to wielofunkcyjna funkcja przeglądarki, której można używać do zarządzania treściami mieszanymi na dużą skalę. Mechanizm raportowania CSP może służyć do śledzenia treści mieszanych w witrynie i zapewniania procesów egzekwowania zasad, które chronią użytkowników przez uaktualnianie lub blokowanie treści mieszanych.
Możesz włączyć te funkcje na stronie, dodając nagłówek Content-Security-Policy lub Content-Security-Policy-Report-Only w odpowiedzi wysyłanej z serwera.
Możesz też ustawić Content-Security-Policy (ale nie Content-Security-Policy-Report-Only), używając tagu <meta> w sekcji <head> strony.
Znajdowanie treści mieszanych za pomocą standardu Content Security Policy
Możesz użyć standardu Content Security Policy, aby zbierać raporty o treściach mieszanych w swojej witrynie.
Aby włączyć tę funkcję, ustaw dyrektywę Content-Security-Policy-Report-Only, dodając ją jako nagłówek odpowiedzi w swojej witrynie.
Nagłówek odpowiedzi:
Content-Security-Policy-Report-Only: default-src https: 'unsafe-inline' 'unsafe-eval'; report-uri https://example.com/reportingEndpoint
Za każdym razem, gdy użytkownik odwiedza stronę w Twojej witrynie, jego przeglądarka wysyła do https://example.com/reportingEndpoint raporty w formacie JSON dotyczące wszelkich naruszeń zasad bezpieczeństwa treści.
W takim przypadku raport jest wysyłany za każdym razem, gdy zasób podrzędny jest wczytywany przez HTTP.
Raporty te zawierają adres URL strony, na której doszło do naruszenia zasad, oraz adres URL zasobu podrzędnego, który naruszył zasady.
Jeśli skonfigurujesz punkt końcowy raportowania tak, aby rejestrował te raporty, możesz śledzić treści mieszane w witrynie bez konieczności odwiedzania każdej strony.
Należy pamiętać o 2 kwestiach:
- Użytkownicy muszą odwiedzić Twoją stronę w przeglądarce, która obsługuje nagłówek CSP. Dotyczy to większości nowoczesnych przeglądarek.
- Otrzymujesz raporty tylko o stronach odwiedzanych przez użytkowników. Jeśli więc masz strony, które nie generują dużego ruchu, może minąć trochę czasu, zanim otrzymasz raporty dotyczące całej witryny.
Więcej informacji i przykładowy punkt końcowy znajdziesz w przewodniku po zasadach bezpieczeństwa treści.
Alternatywy dla raportowania za pomocą CSP
Jeśli Twoja witryna jest hostowana na platformie takiej jak Blogger, możesz nie mieć dostępu do modyfikowania nagłówków i dodawania CSP. Zamiast tego możesz użyć robota indeksującego witryny, który znajdzie problemy w Twojej witrynie, np. HTTPSChecker lub Mixed Content Scan.
Uaktualnianie niezabezpieczonych żądań
Przeglądarki zaczynają uaktualniać i blokować niezabezpieczone żądania. Możesz użyć dyrektyw CSP, aby wymusić automatyczne uaktualnianie lub blokowanie tych zasobów.
Dyrektywa CSP upgrade-insecure-requests instruuje przeglądarkę, aby przed wysłaniem żądań sieciowych uaktualniła niezabezpieczone adresy URL.
Jeśli na przykład strona zawiera tag obrazu z adresem URL HTTP, takim jak
<img src="https://example.com/image.jpg">
Zamiast tego przeglądarka wysyła bezpieczne żądanie do https://example.com/image.jpg, chroniąc użytkownika przed treściami mieszanymi.
Możesz włączyć to zachowanie, wysyłając nagłówek Content-Security-Policy z tą dyrektywą:
Content-Security-Policy: upgrade-insecure-requests
Możesz też umieścić tę samą dyrektywę w sekcji <head> dokumentu, używając elementu <meta>:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Podobnie jak w przypadku automatycznego uaktualniania przeglądarki, jeśli zasób nie jest dostępny przez HTTPS, uaktualnione żądanie nie powiedzie się i zasób nie zostanie wczytany.
Dzięki temu Twoja strona będzie bezpieczna. Dyrektywa upgrade-insecure-requests idzie dalej niż automatyczne uaktualnianie przeglądarki, próbując uaktualnić żądania, których przeglądarka obecnie nie uaktualnia.
Dyrektywa upgrade-insecure-requests kaskadowo przechodzi do dokumentów <iframe>, zapewniając ochronę całej strony.