Referrer-Policy
ważność niskamierzonysposób security_headers
Kontroluje, co trafia do nagłówka Referer. Brak to wyciek adresów wewnętrznych.
WIKI
artykuł z 16.09.2026 · źródeł 8Nagłówek Referrer-Policy to parametr monitoringu stron internetowych, który sprawdza, czy odpowiedź serwera zawiera nagłówek Referrer-Policy. Pomiar kończy się jednym z trzech wyników: nagłówek obecny, brak nagłówka albo nie udało się pobrać odpowiedzi. Nagłówek określa, ile informacji o stronie źródłowej przeglądarka umieszcza w nagłówku Referer żądań wychodzących z dokumentu [2].
Jak działa
Nagłówek Referer zawiera adres strony, z której wyszło żądanie: przejście po odnośniku albo pobranie obrazu czy skryptu [4]. Polityka decyduje, czy trafi do niego pełny adres, samo pochodzenie, czyli adres bez ścieżki i zapytania, czy nic [1]. Przed wysłaniem przeglądarka zawsze usuwa z adresu fragment oraz nazwę użytkownika i hasło, a adres dłuższy niż 4096 znaków skraca do pochodzenia [1].
Politykę ustawia nagłówek HTTP, element meta o nazwie referrer, atrybut referrerpolicy na odnośnikach, obrazach, ramkach i elementach link albo relacja rel="noreferrer" [1] [2]. Gdy strona nie ustawia żadnej polityki, obowiązuje domyślna strict-origin-when-cross-origin [1]. Chrome przyjął ją w wersji 85 w 2020 roku; wcześniej powszechną wartością domyślną było no-referrer-when-downgrade [3]. Polityka ustawiona przez stronę ma pierwszeństwo przed domyślną [3].
Standardy i specyfikacje
- Referrer Policy (W3C WebAppSec) definiuje osiem wartości oraz pusty łańcuch, który oznacza brak polityki i przejście do polityki nadrzędnej albo domyślnej [1]. Wersja kandydująca opublikowana w 2017 roku jako zachowanie domyślne wskazywała jeszcze
no-referrer-when-downgrade[8]. - MDN podaje
strict-origin-when-cross-originjako politykę stosowaną, gdy żadnej nie określono albo wartość jest nieprawidłowa [2]. - OWASP zaleca jawne ustawienie
strict-origin-when-cross-origini uzasadnia to tym, że współczesne przeglądarki domyślnie przestały wysyłać obcym serwisom ścieżkę i zapytanie [6]. - Pisownia. W nagłówku HTTP i elemencie
metawartość zapisuje się jakono-referrer, z myślnikiem, a w atrybuciereljakonoreferrer, bez myślnika [2]. Chrome, zapowiadając zmianę wartości domyślnej, odnotował, że większość przeglądarek zmierza w podobnym kierunku ochrony prywatności [3].
Zagrożenia i skutki
Tokeny w adresach. OWASP opisuje ujawnienie danych przez parametry adresu: nazwy użytkowników, hasła i tokeny w URL trafiają m.in. do nagłówka Referer, logów serwera, historii i pamięci podręcznej przeglądarki, a samo HTTPS tego nie rozwiązuje [5]. MDN podaje przykład strony resetu hasła z odnośnikiem do serwisu społecznościowego w stopce: po kliknięciu serwis może otrzymać adres resetu i wykorzystać zawarte w nim informacje [4]. Specyfikacja zastrzega, że kontrola nad nagłówkiem pomaga chronić adresy uprawniające, ale sama nie zapobiega wszystkim wyciekom [1].
Treści zewnętrzne. Nagłówek nie towarzyszy tylko kliknięciom. Informację o stronie źródłowej dostają też osadzone obrazy i widżety serwisów społecznościowych [4]. Dla elementów szczególnie narażonych MDN zaleca atrybut referrerpolicy="no-referrer" albo relację rel="noreferrer", a dla całego dokumentu element meta z polityką no-referrer [4].
Dane osobowe. Dane osobowe to wszelkie informacje o zidentyfikowanej lub możliwej do zidentyfikowania osobie, np. adres e-mail, adres IP albo identyfikator z pliku cookie [7]. Dane pseudonimizowane, które pozwalają ponownie zidentyfikować osobę, pozostają danymi osobowymi w rozumieniu RODO [7]. OWASP przytacza przypadek logowania, w którym parametry adresu zawierały jednorazowy kod i adres e-mail użytkownika [5]. MDN zaleca, by nie umieszczać danych wrażliwych w adresach, przesyłać je metodą POST i usuwać treści zewnętrzne ze stron logowania, płatności i resetu hasła [4].
Brak nagłówka to nie pełny wyciek. Bez polityki strony przeglądarka stosuje domyślną: obcym serwisom wysyła samo pochodzenie, a pełny adres tylko w obrębie tego samego pochodzenia [3] [6]. Ścieżka i zapytanie trafiają więc nadal do zasobów z tego samego pochodzenia [3]. Pełny adres wycieka do obcych serwisów przy starszej domyślnej no-referrer-when-downgrade albo przy polityce jawnie liberalnej [2].
Polityki liberalne. Wartość unsafe-url wysyła pełny adres niezależnie od bezpieczeństwa połączenia, co MDN oznacza jako ujawnianie informacji wrażliwych [2]. Wartości origin, origin-when-cross-origin i unsafe-url mogą ujawniać informacje przez połączenia nieszyfrowane [8].
Przykłady
Tabela zestawia zawartość nagłówka Referer przy żądaniu wychodzącym ze strony HTTPS [1] [2].
| Polityka | To samo pochodzenie | Obce pochodzenie, HTTPS | Cel po HTTP |
|---|---|---|---|
no-referrer | nic | nic | nic |
same-origin | pełny URL | nic | nic |
origin | pochodzenie | pochodzenie | pochodzenie |
strict-origin | pochodzenie | pochodzenie | nic |
origin-when-cross-origin | pełny URL | pochodzenie | pochodzenie |
strict-origin-when-cross-origin (domyślna) | pełny URL | pochodzenie | nic |
no-referrer-when-downgrade | pełny URL | pełny URL | nic |
unsafe-url | pełny URL | pełny URL | pełny URL |
- [1] Referrer Policy — Editor's Draft · W3C WebAppSec
- [2] Referrer-Policy header · MDN Web Docs
- [3] A new default Referrer-Policy for Chrome: strict-origin-when-cross-origin · Chrome for Developers
- [4] Referer header: privacy and security concerns · MDN Web Docs
- [5] Information exposure through query strings in URL · OWASP
- [6] HTTP Security Response Headers Cheat Sheet · OWASP
- [7] Data protection explained · Komisja Europejska
- [8] Referrer Policy — Candidate Recommendation, 26 January 2017 · W3C
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 security_headers
- W 30 dni
- 0przebiegów
- Ostatni
- 19.09.2026start przebiegu
- Stron w przebiegach
- —33 przebiegów bez liczby stron
CARD
karta z kodu CREATO_PING, odczyt 22.09.2026Jak 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.
| Obszar i ważność | Bezpieczeństwo · niska (B21) |
|---|---|
| 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 helper | sposób security_headers · CREATO_PING/helpers/security_headers.py |
| Testy |
|
| Typ wyniku | 0 albo 1 ustalenie missing_referrer_policy |
| Jednostka | brak — wynik jakościowy (obecność nagłówka) |
| Próg i reguła | Timeout 6,0 s, połączenie 2,0 s (stała w helperze). Reguła: brak nagłówka = missing_referrer_policy; nagłówek z dowolną wartością, także unsafe-url, = ok. |
| Gdzie leżą pokrętła | CREATO_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_referrer_policy |
| Retencja odczytów | Surowy 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 |
|
| Karta przepisana z | CREATO_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 |
missing_referrer_policy: bramka polityki zamknięta (gate=false) — zostaje odczyt i werdykt „bez_subtaska” w bazie skanera, sprawa nie powstaje, więc usterka „Brak polityki adresu źródłowego” (waga 1) nie wchodzi do wskaźnika strony. Utwardzenie, nie incydent (waga 1 w katalogu usterek).
| Kod | Finding | Severity | Pewność | Skutek | Finding / alarm | Waga → ocena | Co zrobić |
|---|---|---|---|---|---|---|---|
| B21.01 | Brak Referrer-Policymissing_referrer_policy | Niska | Ewidentne | bez wpływu | nie / nie | waga 1 → ocena 2 (zielony) | Dodaj Referrer-Policy: strict-origin-when-cross-origin. |
| Kod i klucz | B21.01 · missing_referrer_policy · w tabeli typów |
|---|---|
| Co znaczy | Adresy wewnętrzne wyciekają w nagłówku Referer. |
| Kiedy powstaje | Emitowany, gdy w nagłówkach odpowiedzi (nazwy lowercase) brak 'referrer-policy'.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. Meta referrer w HTML nie jest brany pod uwagę. |
| Severity · pewność | Niska · Ewidentne |
| Skutek dla strony | bez wpływu · tylko statystyka (gate=false) · alarm nie |
| Waga → ocena | waga 1 → ocena 2 (zielony) |
| Klasyfikacja | CWE: CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor)OWASP Top 10:2025: A02:2025 Security MisconfigurationOWASP ASVS 5.0.0: 3.4.5OCSF 1.9.0: Compliance Finding (class_uid 2003) |
| Rekord OCSF | finding_info.analytic.uid = "B21.01" · analytic.name = "missing_referrer_policy" · finding_info.types = ["B21 Referrer-Policy"] |
| Co zrobić | Dodaj Referrer-Policy: strict-origin-when-cross-origin. |
| Wersje typu |
|
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. Kolejność po pierwszych pięciu grupach ustali miara trafności.