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 z coraz bardziej niezabezpieczone treści mieszane będą blokowane, zgodnie z opisem w sekcji Co to jest treść mieszana?
W tym przewodniku pokażemy techniki i narzędzia, które pomogą Ci rozwiązać problemy z mieszanymi treściami i zapobiegać ich powstawaniu.
Znajdowanie treści mieszanej na stronie
Gdy wchodzisz na stronę HTTPS w Google Chrome, przeglądarka ostrzega o treści mieszanej w postaci błędów i ostrzeżeń w konsoli JavaScript.
W artykule Czym są treści mieszane? znajdziesz kilka przykładów i informacje o tym, jak problemy są zgłaszane w Narzędziach deweloperskich Chrome.
Przykład pasywnej treści mieszanej spowoduje wyświetlenie poniższych ostrzeżeń.
Jeśli przeglądarka znajdzie treści pod adresem URL https
, automatycznie je zaktualizuje, a następnie wyświetli komunikat.
Aktywna treść mieszana jest blokowana i wyświetla ostrzeżenie.
Jeśli widzisz takie ostrzeżenia dotyczące http://
adresów URL w swojej witrynie, musisz usunąć je w jej źródle.
Warto sporządzić listę tych adresów URL wraz ze stroną, na której zostały znalezione, aby skorzystać z nich podczas naprawiania błędów.
Znajdowanie treści mieszanej w witrynie
Możesz wyszukiwać treści mieszane bezpośrednio w kodzie źródłowym.
Wyszukaj w źródle hasło http://
i poszukaj tagów zawierających atrybuty adresu URL HTTP.
Pamiętaj, że obecność atrybutu http://
w atrybucie href
tagów kotwicy (<a>
) często nie jest problemem związanym z mieszanymi treściami, z pewnymi wyjątkami, o których piszemy dalej.
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. Obrazy mogą być na przykład uwzględniane za pomocą pełnego adresu URL zamiast ścieżki względnej. Musisz je znaleźć i naprawić w systemie CMS.
Naprawianie treści mieszanych
Gdy znajdziesz w źródle witryny treści mieszane, możesz je poprawić w ten sposób:
Jeśli w konsoli pojawi się komunikat, że żądanie zasobu zostało automatycznie przekształcone z HTTP w HTTPS, możesz bezpiecznie zmienić w kodzie adres URL zasobu http://
na https://
.
Możesz też sprawdzić, czy zasób jest dostępny w bezpiecznym trybie, zmieniając http://
na https://
na pasku adresu przeglądarki i próbując otworzyć adres URL w karcie przeglądarki.
Jeśli za pomocą https://
nie możesz uzyskać dostępu do zasobu, rozważ jedną z tych opcji:
- Dołącz zasób z innego hosta, jeśli jest dostępny.
- Pobierz i przechowuj treści bezpośrednio w swojej witrynie, jeśli masz na to prawo.
- Wyklucz zasób ze swojej witryny.
Po rozwiązaniu problemu wyświetl stronę, na której pierwotnie pojawił się błąd, i sprawdź, czy błąd już nie występuje.
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 mieszanymi treściami, ponieważ powodują przejście do nowej strony.
Oznacza to, że zwykle nie trzeba ich naprawiać.
Jednak niektóre skrypty galerii obrazów zastępują funkcjonalność tagu <a>
i wczytują zasób HTTP określony przez atrybut href
do wyświetlacza lightbox na stronie, co powoduje problem z treściami mieszanymi.
Obsługa treści mieszanych na dużą skalę
Opisane powyżej 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 może być trudno śledzić wszystkie wczytywane treści. Aby ułatwić to zadanie, możesz użyć zasad bezpieczeństwa treści, aby poinformować przeglądarkę o mieszanych treściach i upewnić się, że strony nigdy nie wczytują nieoczekiwanie niezabezpieczonych zasobów.
Polityka bezpieczeństwa treści
Content Security Policy (CSP) to uniwersalna funkcja przeglądarki umożliwiająca zarządzanie treściami mieszanymi na dużą skalę. Mechanizm zgłaszania CSP może służyć do śledzenia mieszanych treści w witrynie oraz do stosowania zasad egzekwowania zasad, aby chronić użytkowników przez uaktualnieniem lub zablokowaniem mieszanych treści.
Możesz włączyć te funkcje na stronie, dodając nagłówek Content-Security-Policy
lub Content-Security-Policy-Report-Only
w odpowiedzi wysłanej z serwera.
Dodatkowo możesz ustawić Content-Security-Policy
(ale nie Content-Security-Policy-Report-Only
) za pomocą tagu <meta>
w sekcji <head>
na stronie.
Wyszukiwanie treści mieszanych za pomocą standardu Content Security Policy
Za pomocą polityki bezpieczeństwa treści możesz zbierać raporty o zawartości mieszanej w swojej witrynie.
Aby włączyć tę funkcję, ustaw dyrektywę Content-Security-Policy-Report-Only
, dodając ją jako nagłówek odpowiedzi dla swojej witryny.
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 treści naruszających zasady bezpieczeństwa treści.
W takim przypadku za każdym razem, gdy zasób podrzędny jest ładowany przez HTTP, wysyłany jest raport.
Raporty te obejmują adres URL strony, na której doszło do naruszenia zasad, oraz adres URL zasobu podrzędnego, który naruszał zasady.
Jeśli skonfigurujesz punkt końcowy raportowania na potrzeby rejestrowania tych raportów, możesz śledzić mieszane treści w swojej witrynie bez konieczności odwiedzania poszczególnych stron.
Należy jednak pamiętać o 2 kwestiach:
- Użytkownicy muszą otworzyć Twoją stronę w przeglądarce, która obsługuje nagłówek CSP. Dotyczy to większości nowoczesnych przeglądarek.
- Raporty dotyczą tylko stron odwiedzanych przez użytkowników. Jeśli więc masz niezbyt popularne strony, może minąć trochę czasu, zanim zaczniesz generować raporty dotyczące całej witryny.
Więcej informacji i przykład punktu końcowego znajdziesz w zasadach dotyczących bezpieczeństwa treści.
Alternatywy dla zgłaszania treści 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 nagłówka CSP. Możesz też użyć robota do wyszukiwania problemów w witrynie, np. HTTPSChecker lub skanowania treści mieszanych.
Uaktualnianie niepewnych żądań
Przeglądarki zaczynają uaktualniać i blokować niebezpieczne żądania. Możesz użyć dyrektyw CSP, aby wymusić automatyczne uaktualnianie lub blokowanie tych komponentów.
Dyrektywa upgrade-insecure-requests
CSP instruuje przeglądarkę, aby przed wysłaniem żądań sieciowych zaktualizowała niepewne adresy URL.
Jeśli na przykład strona zawiera tag graficzny z adresem URL HTTP takim jak <img src="http://example.com/image.jpg">
Zamiast tego przeglądarka wysyła bezpieczne żądanie do
https://example.com/image.jpg
, chroniąc w ten sposób użytkownika przed mieszanymi treściami.
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 za pomocą elementu <meta>
:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Podobnie jak w przypadku automatycznego uaktualniania w przeglądarce, jeśli zasób nie jest dostępny przez HTTPS, uaktualnione żądanie nie powiedzie się i zasób nie zostanie załadowany.
Zapewnia to bezpieczeństwo strony. Dyrektywa upgrade-insecure-requests
będzie działać dalej niż automatyczne uaktualnianie przeglądarki, próbując uaktualnić żądania, których przeglądarka obecnie nie obsługuje.
Dyrektywa upgrade-insecure-requests
jest stosowana kaskadowo w dokumentach <iframe>
, co zapewnia ochronę całej strony.