Blog 24/7
ARK. B13Parametr monitoringuBezpieczeństwo · lista 87 parametrów

Mixed content

ważność wysokamierzonysposób mixed_content

Strona HTTPS ładuje zasoby po HTTP. Przeglądarka blokuje zasoby i pokazuje ostrzeżenie.

ARK. 1

WIKI

artykuł z 16.09.2026 · źródeł 9

Mixed 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].

RYS. 1.1Zasób HTTP a atakujący w sieci

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].

RYS. 1.2Klasyfikacja zasobu http://

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-requests każe przeglądarce traktować wszystkie adresy http:// witryny tak, jakby zastąpiono je adresami https:// [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 HTMLKategoriaZachowanie przeglądarki
img z adresem http:// w srculepszalna [1]próba po HTTPS, bez niej obraz się nie wczyta [7]
img z adresem http:// w srcsetblokowalna [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 hrefnawigacja, nie mixed content [4]przejście na nową stronę [4]
dowolny zasób przy nagłówku upgrade-insecure-requestsnie dotyczyadres traktowany jak https:// [5]
TAB. 1.1Przypisy9
  1. [1] Mixed Content (Level 2) · W3C
  2. [2] Mixed content · MDN Web Docs
  3. [3] What is mixed content? · web.dev (Google)
  4. [4] Fixing mixed content · web.dev (Google)
  5. [5] CSP: upgrade-insecure-requests · MDN Web Docs
  6. [6] No More Mixed Messages About HTTPS · Google Online Security Blog
  7. [7] Firefox will upgrade more Mixed Content in Version 127 · Mozilla Security Blog
  8. [8] Improved HTTPS detection and migration in WordPress 5.7 · Make WordPress Core
  9. [9] Transport Layer Security Cheat Sheet · OWASP
ARK. 2

STATS

wyniki z systemu · tylko liczby zbiorcze
TAB. 2.1Odczyty per strona—

Ten 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.

TAB. 2.3Ustalenia—

Ten parametr nie otworzył jeszcze żadnego ustalenia w bazie LAB247. Pusto nie znaczy „czysto” — znaczy, że nic nie przekroczyło reguły.

TAB. 2.4Przebiegi z tym sposobem sprawdzeniaod 09.09.2026
Przebiegów
33sposób mixed_content
W 30 dni
0przebiegów
Ostatni
19.09.2026start przebiegu
Stron w przebiegach
—33 przebiegów bez liczby stron
ARK. 3

CARD

karta z kodu CREATO_PING, odczyt 22.09.2026

Jak ten parametr trafia do ClickUpa: wynik sondy to linia w subtasku 2. Pomiar, a usterka, którą otwiera — linia w subtasku 1. Podsumowanie (z identyfikatorem CWE i kategorią OWASP), skąd liczy się wskaźnik zagrożenia i status strony. Projekcja z bazy skanera odświeża oba subtaski co godzinę. Do 22.09 każde ustalenie dostawało własny subtask i status ze starego słownika (PODATNA, WARNING…) — te słowa zostały jeszcze w części opisów pomiaru niżej jako język wewnętrzny sond.

RYS. 3.1Droga parametru przez system: Mixed content
TAB. 3.1Pomiarpliki: 7
Obszar i ważnośćBezpieczeństwo · wysoka (B13)
Workflow i częstotliwośćcreato_ping_security_v2 · P3 działa na LAB247Skaner 2.0, rytm „p3” / „bezpieczenstwo”: premium co 6 h, reszta co 24 h (tier 1–3), co 9 dni (tier 4) · Dokładny skan. dns_integrity porównuje NS, MX, SPF i DMARC z wzorcem z poprzedniego przebiegu.
Sonda i helpersposób mixed_content · CREATO_PING/helpers/mixed_content.py
Testy
  1. GET https://domena/ (tylko strona główna) z własnym UA, bez podążania za przekierowaniami.
  2. Kod inny niż 200 albo błąd sieci = brak wyniku i brak ustalenia.
  3. Pierwsze 200 000 znaków HTML po wycięciu komentarzy.
  4. Wyrażenie regularne szuka adresów http:// po src=, href= i action= (także data-src, xlink:href).
  5. Do 10 unikalnych adresów, w dowodzie pierwsze 5. Tylko przebieg P3, strony sprawdzane po kolei.
Typ wyniku0 albo 1 ustalenie: lista unikalnych adresów http:// znalezionych w HTML strony głównej
Jednostkabrak — wynik jakościowy; liczba adresów w szczegółach ustalenia
Próg i regułaReguł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łaCREATO_PING/helpers/mixed_content.py → _TIMEOUT, _MAX_HTTP_URLS, _HTTP_RES_RECREATO_PING/config/incident_policy.toml → [finding] mixed_content
Retencja odczytówSurowy pomiar jako NIEZMIENNY wiersz tabeli `odczyty` w bazie skanera (wejście, wyjście, dowody, sha karty sondy i helpera, commit kodu) — trigger odrzuca każdą zmianę. Okno retencji z kohorty: 90 dni premium, 30 dni reszta; poza oknem zostają odczyty z werdyktem problemu, akcją albo etykietą, bo replay reguł ich potrzebuje (`skaner/retencja.py`). Do LAB247 ten kanał nie idzie (do bazy serwisu jadą dziś tylko sprawdzenia dostępności), więc poza odczytem zostaje werdykt w tabeli `werdykty` i sprawa w tabeli `sprawy`.
Znane rozbieżności
  1. Zasoby w CSS url(...) nigdy nie pasują do wyrażenia, choć opis helpera je obiecuje (sprawdzone na przykładowym HTML).
  2. Zwykły link a href="http://…" i canonical dają ustalenie, choć nawigacja nie jest mixed content wg W3C — nakłada się na parametr Spójność HTTP → HTTPS i jest prawdopodobnym źródłem fałszywych alarmów.
  3. Pomijane prawdziwe zasoby: srcset, poster, object data, @import.
  4. Brak trzeciego stanu: przekierowanie, kod inny niż 200, WAF albo błąd sieci dają pustą listę, nieodróżnialną od „czysto”.
  5. Helper nie wysyła sygnału zamknięcia — do potwierdzenia, co zamyka ustalenie po naprawie strony.
kandydaci do pętli: kod a opis parametru albo specyfikacja
Karta przepisana zCREATO_PING/helpers/mixed_content.py · CREATO_PING/config/incident_policy.toml · CREATO_PING/helpers/security_runner.py · CREATO_PING/skaner/adapter_clickup.py · CREATO_PING/skaner/sprawy.py · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 22.09.2026
TAB. 3.2Co oznacza failtypów Findingów: 1

mixed_content: bramka polityki otwarta (gate=true) → sprawa w skanerze → Zasoby po HTTP na stronie HTTPS — „niezabezpieczona” — waga 2 → ocena 3–4 (niebieski), status strony „niski”, dopóki sprawa jest otwarta.

KodFindingSeverityPewnośćSkutekFinding / alarmWaga → ocenaCo zrobić
B13.01Mixed contentmixed_contentŚredniaEwidentneusterka niekrytycznatak / niewaga 2 → ocena 3–4 (niebieski)Popraw adresy zasobów na https.
TAB. 3.3B13.01 · Mixed contentwersja 1 · 01.10.2026
Kod i kluczB13.01 · mixed_content · w tabeli typów
Co znaczyStrona https ładuje zasoby po http — przeglądarka pokazuje „Niezabezpieczona”.
Kiedy powstajeTylko dla https. GET https://domena bez podążania za przekierowaniami musi zwrócić dokładnie 200. Finding powstaje, gdy w pierwszych 200 KB HTML (bez komentarzy) atrybut src/href/action albo url( zawiera adres http://.Pomijane są mailto:, tel:, data:, javascript:.
Severity · pewnośćŚrednia · Ewidentne
Skutek dla stronyusterka niekrytyczna · zakłada Finding · alarm nie
Waga → ocenawaga 2 → ocena 3–4 (niebieski)
KlasyfikacjaCWE: CWE-319 (Cleartext Transmission of Sensitive Information)OWASP Top 10:2025: A04:2025 Cryptographic FailuresOWASP ASVS 5.0.0: 12.2.1OCSF 1.9.0: Compliance Finding (class_uid 2003)
Rekord OCSFfinding_info.analytic.uid = "B13.01" · analytic.name = "mixed_content" · finding_info.types = ["B13 Mixed content"]
Co zrobićPopraw adresy zasobów na https.
Wersje typu
  1. v1 · 01.10.2026 — kod B13.01 nadany (finding-codes.ts)
ARK. 4

LOOP

bez pętli
RYS. 4.1Pętla parametru — sześć etapów
TAB. 4.1Trafność, 30 dnialarmy · prawdziwe · fałszywe · bez rozstrzygnięcia

Trafnoś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.

TAB. 4.2Pętle—

Ten parametr nie przeszedł jeszcze żadnej pętli. W kolejce pętli 1 jest na pozycji 5.

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com