Mixed content
ważność wysokamierzonysposób mixed_content
Strona HTTPS ładuje zasoby po HTTP. Przeglądarka blokuje zasoby i pokazuje ostrzeżenie.
WIKI
artykuł z 16.09.2026 · źródeł 9Mixed content (treść mieszana) to parametr monitoringu stron internetowych, który sprawdza, czy strona wczytana przez HTTPS odwołuje się w kodzie HTML do zasobów pod adresami http://. Wynikiem pomiaru jest lista takich adresów albo jej brak. Według MDN mixed content to sytuacja, w której bezpiecznie wczytana strona korzysta z zasobów pobieranych przez HTTP lub inny niezabezpieczony protokół [2].
Jak działa
Specyfikacja W3C uznaje żądanie za mixed content, gdy jego adres URL nie jest potencjalnie godny zaufania, a kontekst, który je wysyła, zabrania mieszania kontekstów bezpieczeństwa [1]. Sam dokument HTML przychodzi zaszyfrowany, ale obrazy, arkusze stylów czy skrypty, do których się odwołuje, byłyby pobierane przez nieszyfrowane HTTP [3].
Standard dzieli taką treść na dwie kategorie. Treść ulepszalna (ang. upgradeable) to żądania o przeznaczeniu image, audio i video [1]. Przeglądarka zmienia w nich schemat adresu z http na https [1]. Cała pozostała treść mieszana jest blokowalna (ang. blockable), na przykład skrypty, dane wtyczek i żądania XMLHttpRequest [1]. MDN zalicza tu także arkusze stylów wskazane przez link, ramki iframe, wywołania fetch(), czcionki z @font-face oraz obrazy wskazane przez srcset albo element picture [2]. Przeglądarki ulepszają obrazy, wideo i audio, a żądania wszystkich pozostałych typów zasobów blokują [2].
Nawigacja nie jest treścią mieszaną. Specyfikacja wyłącza z kontroli nawigacje najwyższego poziomu [1], a web.dev wyjaśnia, że adresy w znacznikach a nie powodują błędów mixed content, bo przenoszą użytkownika na nową stronę [4]. Wyjątkiem są skrypty galerii, które zamiast przejścia wczytują obraz spod href w okienku na tej samej stronie [4]. Zasoby lokalne, takie jak http://localhost/ czy http://127.0.0.1/, przeglądarka traktuje jak bezpieczne [2].
Standardy i specyfikacje
- W3C Mixed Content definiuje pojęcie treści mieszanej, kategorie ulepszalną i blokowalną oraz algorytm ulepszenia żądania [1]. Wcześniejsza wersja specyfikacji definiowała dyrektywę CSP
block-all-mixed-content. Dziś jest ona przestarzała, bo treść mieszana, której nie da się ulepszyć, i tak jest blokowana [1]. - CSP
upgrade-insecure-requestskaże przeglądarce traktować wszystkie adresyhttp://witryny tak, jakby zastąpiono je adresamihttps://[5]. Dyrektywa jest przeznaczona dla witryn z dużą liczbą starych adresów do przepisania [5]. Nie ulepsza nawigacji do obcych domen i nie zastępuje nagłówka HSTS [5]. - Chrome zapowiedział w 2019 roku stopniowe blokowanie całej treści mieszanej, począwszy od wersji 79, połączone z automatycznym ulepszaniem zasobów do
https://[6]. Audio i wideo miały być ulepszane od wersji 80 i blokowane, gdy nie wczytają się po HTTPS [6]. Ulepszanie obrazów przesunięto z wersji 81 na co najmniej 84, a strony z mieszanymi obrazami nadal wywoływały ostrzeżenie „Not Secure” [6]. - Firefox od wersji 127 ulepsza obrazy, audio i wideo do HTTPS i nie wczytuje ich, gdy nie są dostępne po HTTPS [7]. Z ikony kłódki zniknął przy tym znak ostrzeżenia, bo każda treść mieszana jest teraz ulepszona albo zablokowana [7].
Zagrożenia i skutki
Podmiana skryptu. Zasób przesłany bez szyfrowania można podejrzeć i zmodyfikować [2]. Skrypt wczytany w ten sposób pozwala atakującemu czytać lub zmieniać dane w imieniu użytkownika [1]. Atak na aktywną treść mieszaną umożliwia kradzież haseł i ciasteczek sesji albo przekierowanie użytkownika na inną stronę [3]. OWASP zaleca, by strona dostępna przez TLS nie ładowała żadnych zasobów, na przykład JavaScript czy CSS, przez nieszyfrowane HTTP, bo pozwala to podsłuchać ciasteczka sesji albo wstrzyknąć do strony złośliwy kod [9].
Śledzenie i fałszywa treść. Nawet zasoby pasywne zdradzają obserwatorowi sieci, które strony i produkty ogląda użytkownik [3]. Podmieniony obraz może przekazać fałszywą informację albo zmienić pozorne działanie przycisku [2].
Niedziałające elementy strony. Współczesne przeglądarki domyślnie blokują aktywną treść mieszaną [3] [9]. Dla właściciela witryny typowym skutkiem jest więc nie atak, lecz brakujący skrypt, arkusz stylów albo ramka. Obrazy ulepszone do HTTPS nie wczytają się, jeśli serwer nie udostępnia ich po HTTPS [7]. Konsola przeglądarki zgłasza wtedy ostrzeżenia i błędy [4].
Przykłady
Migracja WordPressa na HTTPS. Po przełączeniu witryny na HTTPS w treściach zapisanych w bazie danych zostają wpisane na stałe adresy http://, które trzeba poprawić, żeby uniknąć ostrzeżeń o treści mieszanej [8]. WordPress 5.7 wprowadził funkcję wp_replace_insecure_home_url(), która podmienia takie adresy w locie w treści wpisów, zajawkach, widżetach tekstowych i własnym CSS [8]. Nie obsługuje konfiguracji, w których adres witryny i adres WordPressa się różnią [8].
Naprawa. Jeśli konsola zgłasza automatyczne ulepszenie zasobu, adres http:// w kodzie można bezpiecznie zmienić na https:// [4]. Gdy zasobu nie ma po HTTPS, pozostaje pobranie go z innego hosta, umieszczenie na własnym serwerze, jeśli pozwala na to licencja, albo usunięcie [4]. Nagłówek Content-Security-Policy-Report-Only: default-src https: pozwala zbierać raporty o naruszeniach bez blokowania zasobów [4].
| Odwołanie w HTML | Kategoria | Zachowanie przeglądarki |
|---|---|---|
img z adresem http:// w src | ulepszalna [1] | próba po HTTPS, bez niej obraz się nie wczyta [7] |
img z adresem http:// w srcset | blokowalna [2] | żądanie zablokowane [2] |
script albo iframe z adresem http:// | blokowalna [2] | żądanie zablokowane [2] |
arkusz stylów w link z adresem http:// | blokowalna [2] | żądanie zablokowane [2] |
a z adresem http:// w href | nawigacja, nie mixed content [4] | przejście na nową stronę [4] |
dowolny zasób przy nagłówku upgrade-insecure-requests | nie dotyczy | adres traktowany jak https:// [5] |
- [1] Mixed Content (Level 2) · W3C
- [2] Mixed content · MDN Web Docs
- [3] What is mixed content? · web.dev (Google)
- [4] Fixing mixed content · web.dev (Google)
- [5] CSP: upgrade-insecure-requests · MDN Web Docs
- [6] No More Mixed Messages About HTTPS · Google Online Security Blog
- [7] Firefox will upgrade more Mixed Content in Version 127 · Mozilla Security Blog
- [8] Improved HTTPS detection and migration in WordPress 5.7 · Make WordPress Core
- [9] Transport Layer Security Cheat Sheet · OWASP
STATS
wyniki z systemu · tylko liczby zbiorczeTen parametr nie zapisuje odczytu per strona — przebieg zostawia tylko ustalenia, więc liczby sprawdzonych stron i wyników „ok” system nie ma. Pojawią się po wdrożeniu zapisu przebiegów per strona per parametr.
Ten parametr nie otworzył jeszcze żadnego ustalenia w bazie LAB247. Pusto nie znaczy „czysto” — znaczy, że nic nie przekroczyło reguły.
- Przebiegów
- 33sposób mixed_content
- W 30 dni
- 33przebiegów
- Ostatni
- 19.09.2026start przebiegu
- Stron w przebiegach
- —33 przebiegów bez liczby stron
CARD
karta z kodu CREATO_PING, odczyt 16.09.2026| Obszar i ważność | Bezpieczeństwo · wysoka (B13) |
|---|---|
| Workflow i częstotliwość | creato_ping_security_v2 · P3 działa na LAB247cron co 24 h, T1–T3; T4 raz po anomalii · Dokładny skan. dns_integrity porównuje NS, MX, SPF i DMARC z wzorcem z poprzedniego przebiegu. |
| Sonda i helper | sposób mixed_content · CREATO_PING/helpers/mixed_content.py |
| Testy |
|
| Typ wyniku | 0 albo 1 ustalenie: lista unikalnych adresów http:// znalezionych w HTML strony głównej |
| Jednostka | brak — wynik jakościowy; liczba adresów w szczegółach ustalenia |
| Próg i reguła | Reguła: co najmniej jeden adres http:// = ustalenie. Timeout 10 s, połączenie 3 s — stałe w helperze, nie w config.py. |
| Gdzie leżą pokrętła | CREATO_PING/helpers/mixed_content.py → _TIMEOUT, _MAX_HTTP_URLS, _HTTP_RES_RECREATO_PING/config/incident_policy.toml → [finding] mixed_content |
| Retencja odczytów | Odczytu per strona nie zapisujemy — zostaje tylko ustalenie w tabeli findings (otwarcie, zamknięcie, dowód). Replay po surowych odczytach dziś niemożliwy. |
| Znane rozbieżności |
|
| Karta przepisana z | CREATO_PING/helpers/mixed_content.py · CREATO_PING/config/incident_policy.toml · CREATO_PING/helpers/security_runner.py · CREATO_PING/helpers/clickup_writer_v2.py · odczyt 16.09.2026 |
Powaga normalna, pewność ewidentna, skutek WARNING: subtask bez alarmu i bez terminu, status strony przeliczony z otwartych subtasków.
| Ustalenie | Powaga | Pewność | Skutek | Subtask / alarm | Co zrobić |
|---|---|---|---|---|---|
| Mixed contentmixed_content | Normalne | Ewidentne | WARNING | tak / nie | Popraw adresy zasobów na https. |
LOOP
bez pętliTrafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.
Ten parametr nie przeszedł jeszcze żadnej pętli. W kolejce pętli 1 jest na pozycji 5.