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

Nagłówek HSTS

ważność wysokamierzonysposób security_headers

Strict-Transport-Security wymusza HTTPS przy kolejnych wizytach. Brak to możliwy downgrade do HTTP.

ARK. 1

WIKI

artykuł z 16.09.2026 · źródeł 7

Nagłówek HSTS to parametr monitoringu stron internetowych, który sprawdza, czy odpowiedź serwera przesłana przez HTTPS zawiera nagłówek Strict-Transport-Security. Pomiar kończy się jednym z trzech wyników: nagłówek obecny, brak nagłówka albo nie udało się pobrać odpowiedzi. HSTS (HTTP Strict Transport Security) to mechanizm, którym witryna deklaruje, że jest dostępna wyłącznie przez bezpieczne połączenia [1].

Jak działa

Serwer wysyła nagłówek w odpowiedzi HTTPS. Wymagana dyrektywa max-age podaje liczbę sekund, przez które przeglądarka traktuje host jako znany host HSTS [1]. Opcjonalna dyrektywa includeSubDomains rozciąga politykę na wszystkie subdomeny [1]. Nagłówek otrzymany przez nieszyfrowane HTTP przeglądarka musi zignorować [1], bo inaczej atakujący w środku połączenia mógłby skrócić ważność polityki albo dodać ją hostowi bez HTTPS [2]. Jeśli odpowiedź zawiera kilka takich nagłówków, przetwarzany jest tylko pierwszy [1].

Przy kolejnej wizycie przeglądarka, zanim załaduje adres http, sprawdza nazwę domeny na liście hostów HSTS. Przy dopasowaniu, jeszcze przed wysłaniem żądania, zamienia schemat na https, a port 80 na 443 [1] [2]. W Chromium ta zamiana jest wewnętrznym przekierowaniem z kodem 307, wybranym po to, by zachować metodę żądania, np. POST [7]. Na znanym hoście HSTS przeglądarka musi zerwać połączenie przy każdym błędzie bezpiecznego transportu [1] i nie pozwala użytkownikowi ominąć ostrzeżenia o certyfikacie [2] [4].

RYS. 1.1Pierwsza wizyta i kolejna z HSTS

Pierwsze żądanie nie jest chronione: host HSTS, który dostaje żądanie przez HTTP, powinien odpowiedzieć stałym przekierowaniem na HTTPS [1], ale tę odpowiedź atakujący może jeszcze przechwycić. Lukę łagodzi lista wstępnie załadowana (ang. preload list), czyli polityka HSTS wpisana do przeglądarki przez jej producenta [1].

RYS. 1.2Od nagłówka do listy preload

Standardy i specyfikacje

  • RFC 6797 (listopad 2012) definiuje nagłówek Strict-Transport-Security oraz dyrektywy max-age i includeSubDomains. Jako zagrożenia, którym mechanizm ma przeciwdziałać, wymienia pasywnych i aktywnych atakujących w sieci oraz błędy twórców witryn [1]. Wartość max-age=0 oznacza polecenie, by przeglądarka przestała traktować host jako znany host HSTS [1]. Specyfikacja opisuje też listy wstępnie załadowane jako mechanizm konfigurowany przez producentów przeglądarek [1].
  • Dyrektywa preload nie należy do specyfikacji HSTS [2]. Wymagania stawia lista prowadzona przez projekt Chromium: ważny certyfikat, przekierowanie z HTTP na HTTPS na tym samym hoście, wszystkie subdomeny po HTTPS oraz nagłówek na domenie głównej z max-age co najmniej 31536000 sekund, includeSubDomains i preload [3]. Dodatkowe przekierowanie wysyłane przez HTTPS też musi mieć nagłówek HSTS [3]. Firefox, Safari i Edge używają list opartych na liście Chrome [3].
  • OWASP zaleca wartość max-age=63072000; includeSubDomains; preload i zastrzega, że przy błędnej konfiguracji albo problemie z certyfikatem prawowici użytkownicy mogą stracić dostęp do strony [5]. Ściąga OWASP o HSTS wymienia trzy zagrożenia, którym nagłówek zapobiega: ręcznie wpisany lub zapisany w zakładkach adres http, odnośniki po HTTP w aplikacji przeznaczonej dla HTTPS oraz akceptację nieprawidłowego certyfikatu [4].

Zagrożenia i skutki

SSL stripping. Moxie Marlinspike na konferencji Black Hat DC w 2009 roku zwrócił uwagę, że użytkownicy trafiają na HTTPS na dwa sposoby: klikając odnośnik albo przez przekierowanie 302, czyli zawsze najpierw przez HTTP [6]. Opisane przez niego narzędzie sslstrip obserwuje ruch HTTP, zamienia odnośniki https:// na http:// oraz nagłówki Location, a do serwera łączy się już po HTTPS [6]. Serwer nie widzi różnicy, a przeglądarka nie wyświetla ostrzeżeń [6]. Jako wynik 24 godzin działania tej techniki autor podał 117 kont poczty, 16 numerów kart płatniczych, 7 loginów PayPal i ponad 300 innych danych logowania [6]. Ściąga OWASP o HSTS wskazuje sslstrip jako materiał źródłowy [4].

Pierwsza wizyta. HSTS zaczyna działać dopiero po co najmniej jednym bezpiecznym połączeniu z hostem i odebraniu nagłówka [2]. RFC 6797 nazywa to podatnością bootstrap MITM: użytkownik wpisuje adres albo klika odnośnik http do hosta, którego przeglądarka jeszcze nie zna [1]. Wpis na liście preload tę lukę łagodzi [2].

Subdomeny bez HTTPS. Z includeSubDomains każda subdomena bez poprawnie skonfigurowanego bezpiecznego połączenia staje się dla przeglądarki nieosiągalna [1]. Bez tej dyrektywy pozostaje natomiast możliwy atak przez ciasteczka, którymi mogą manipulować subdomeny [4].

Trudne wycofanie. Domenę można usunąć z listy preload, ale zmiana dociera do użytkowników z aktualizacją Chrome po miesiącach [3]. Dlatego lista zaleca zgłoszenie dopiero wtedy, gdy cała witryna i wszystkie subdomeny mogą długoterminowo działać po HTTPS, oraz stopniowe podnoszenie max-age [3].

Prywatność. Zapamiętywana polityka HSTS może posłużyć do identyfikacji użytkowników bez ciasteczek [4]. RFC 6797 opisuje to jako możliwą formę śledzenia [1].

Przykłady

Nagłówek albo sytuacjaSkutek w przeglądarce
brak nagłówkabrak polityki; każde wejście przez http:// może zostać przechwycone [2] [6]
max-age=31536000; includeSubDomainshost i subdomeny tylko po HTTPS przez rok [2]
max-age=63072000; includeSubDomains; preloadspełnia wymagania listy preload [3]
max-age=300, potem 604800, potem 2592000 (z includeSubDomains)etapowe wdrożenie: 5 minut, tydzień, miesiąc [3]
max-age=0przeglądarka przestaje traktować host jako znany host HSTS [1]
nagłówek wysłany po HTTPignorowany [1]
includeSubDomains, subdomena bez HTTPSsubdomena nieosiągalna [1]
błąd certyfikatu na znanym hoście HSTSpołączenie zerwane, bez możliwości obejścia [1] [2]
TAB. 1.1Przypisy7
  1. [1] RFC 6797 — HTTP Strict Transport Security (HSTS) · IETF
  2. [2] Strict-Transport-Security header · MDN Web Docs
  3. [3] HSTS Preload List Submission · Chromium Project
  4. [4] HTTP Strict Transport Security Cheat Sheet · OWASP
  5. [5] HTTP Security Response Headers Cheat Sheet · OWASP
  6. [6] Moxie Marlinspike — New Tricks For Defeating SSL In Practice (Black Hat DC 2009) · Black Hat
  7. [7] net/url_request/url_request_http_job.cc — kod źródłowy Chromium · Chromium Project
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 security_headers
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: Nagłówek HSTS
TAB. 3.1Pomiarpliki: 6
Obszar i ważnośćBezpieczeństwo · wysoka (B14)
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 security_headers · CREATO_PING/helpers/security_headers.py
Testy
  1. Tylko przebieg P3; domena bez rekordu A pominięta już na wstępie.
  2. HEAD https://domena z podążaniem za przekierowaniami — nagłówki czytane wyłącznie z odpowiedzi końcowej; kod 405 = druga próba GET.
  3. Sprawdzana tylko obecność Strict-Transport-Security; wartość (max-age, includeSubDomains, preload) nie jest czytana.
  4. Jedno żądanie obsługuje sześć nagłówków bezpieczeństwa; strony w przebiegu sprawdzane po kolei.
Typ wyniku0 albo 1 ustalenie missing_hsts
Jednostkabrak — wynik jakościowy (obecność nagłówka)
Próg i regułaTimeout 6,0 s, połączenie 2,0 s (stała w helperze). Reguła: brak nagłówka = missing_hsts; nagłówek z dowolną wartością, także max-age=0, = ok.
Gdzie leżą pokrętłaCREATO_PING/helpers/security_headers.py → _CHECKS, _TIMEOUTCREATO_PING/helpers/security_runner.py → do_writera (bramka gate z polityki; sito powagi zniknęło 18.09)CREATO_PING/config/incident_policy.toml → [finding] missing_hsts
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. Sprawdzana jest sama obecność nagłówka: max-age=0 albo wartość bez sensu przechodzą jako ok.
  2. Błąd sieci albo timeout zwraca pustą listę — nieodróżnialne od „nagłówek jest”.
  3. Odpowiedź 403 z WAF-a albo 5xx oceniana jak zwykła strona: brak HSTS na stronie blokady daje fałszywe ustalenie.
  4. Pośrednie przekierowania nie są badane, a lista preload wymaga HSTS także na nich.
kandydaci do pętli: kod a opis parametru albo specyfikacja
Karta przepisana zCREATO_PING/helpers/security_headers.py · CREATO_PING/helpers/security_runner.py · CREATO_PING/config/incident_policy.toml · CREATO_PING/skaner/klasyfikacja.py · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 22.09.2026
TAB. 3.2Co oznacza failtypów Findingów: 1

missing_hsts: bramka polityki zamknięta (gate=false) — zostaje odczyt i werdykt „bez_subtaska” w bazie skanera, sprawa nie powstaje, więc usterka „Brak nagłówka HSTS” (waga 1) nie wchodzi do wskaźnika strony. Utwardzenie, nie incydent: w katalogu usterek to waga 1 (dług techniczny), więc nawet po otwarciu bramki strona z samym brakiem nagłówka zostałaby „sprawna”.

KodFindingSeverityPewnośćSkutekFinding / alarmWaga → ocenaCo zrobić
B14.01Brak HSTSmissing_hstsŚredniaEwidentnebez wpływunie / niewaga 1 → ocena 2 (zielony)Dodaj nagłówek HSTS w konfiguracji serwera.
TAB. 3.3B14.01 · Brak HSTSwersja 1 · 01.10.2026
Kod i kluczB14.01 · missing_hsts · w tabeli typów
Co znaczyBrak Strict-Transport-Security — możliwy downgrade do HTTP.
Kiedy powstajeEmitowany, gdy w nagłówkach odpowiedzi (nazwy lowercase) brak 'strict-transport-security'.Tylko p3. Jedno żądanie HEAD {scheme}://{domena} (UA „CREATO_PING-secheaders/1.0”, follow_redirects, timeout 6 s / connect 2 s); przy 405 powtórka GET. Sprawdzane nagłówki odpowiedzi końcowej bez względu na kod statusu; wartość nie jest walidowana (liczy się sama obecność nazwy). Błąd httpx = brak jakichkolwiek findingów nagłówków. Severity helpera high.
Severity · pewnośćŚrednia · Ewidentne
Skutek dla stronybez wpływu · tylko statystyka (gate=false) · alarm nie
Waga → ocenawaga 1 → ocena 2 (zielony)
KlasyfikacjaCWE: CWE-319 (Cleartext Transmission of Sensitive Information)OWASP Top 10:2025: A02:2025 Security Misconfiguration, A04:2025 Cryptographic FailuresOWASP ASVS 5.0.0: 3.4.1OCSF 1.9.0: Compliance Finding (class_uid 2003)
Rekord OCSFfinding_info.analytic.uid = "B14.01" · analytic.name = "missing_hsts" · finding_info.types = ["B14 Nagłówek HSTS"]
Co zrobićDodaj nagłówek HSTS w konfiguracji serwera.
Wersje typu
  1. v1 · 01.10.2026 — kod B14.01 nadany (finding-codes.ts)
ARK. 4

LOOP

pętli: 1
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ętle1 · zmian: 1 · wpływających na cały system: 1
Brak HSTS przestaje zakładać zadanie „podatna”zamknięta historyczna 2026-07-11 → 2026-07-15

Sygnał: Przegląd polityki incydentów: brak nagłówka HSTS zakładał subtask „podatna”, choć to brak utwardzenia, nie incydent.

  1. 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
  2. 2. Werdyktręczniewłaściciel zatwierdził tabelę polityki
  3. 3. Miarabrakliczników trafności wtedy nie było
  4. 4. Kartabrakkarta parametru powstała 2026-09-16
  5. 5. Zmianazrobionenagłówki bezpieczeństwa: gate=false
  6. 6. Replaybrakbrak zapisanych odczytów do replayu
DataZmianaPowódWpływ na systemCommit · replay
2026-07-15missing_hsts: z „wysokie → podatna” na normalne, bez skutku, gate=false, bez alarmu. Pozostałe nagłówki dostały gate=false w tej samej tabeli, ale bez skutku: helper nadaje im powagę normalną albo niską, więc i wcześniej nie przechodziły filtra przebiegu.config/incident_policy.toml · helpers/incident_policy.py · helpers/clickup_writer_v2.pyNagłówek to dobra praktyka utwardzenia, a nie aktywny incydent; mniej szumu na tablicy zadań.cały system To samo wydanie przeniosło decyzję „zakładać zadanie czy nie” z progu powagi na pole gate w polityce — dla wszystkich ustaleń bezpieczeństwa.d59385ebez replayuzatwierdził: właściciel, 2026-07-11 (cała tabela polityki)
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