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

Content-Security-Policy

ważność średniamierzonysposób security_headers

Nagłówek CSP ogranicza źródła zasobów. Brak to brak warstwy ochrony przed XSS.

ARK. 1

WIKI

artykuł z 16.09.2026 · źródeł 6

Nagłówek Content-Security-Policy to parametr monitoringu stron internetowych, który sprawdza, czy odpowiedź serwera zawiera nagłówek Content-Security-Policy. Pomiar kończy się jednym z trzech wyników: nagłówek obecny, brak nagłówka albo nie udało się pobrać odpowiedzi. Content Security Policy (CSP) to mechanizm, którym twórca strony określa, jakie zasoby dokument może pobrać lub wykonać; ma ograniczać ryzyko ataków polegających na wstrzyknięciu treści [1].

Jak działa

Polityka składa się z dyrektyw. Dyrektywa default-src jest wartością zapasową dla pozostałych dyrektyw pobierania, a script-src wskazuje dozwolone źródła JavaScriptu i WebAssembly [2]. Gdy polityka zawiera default-src albo script-src, przeglądarka nie wykonuje skryptów osadzonych w kodzie HTML: elementów script z treścią, atrybutów obsługi zdarzeń, takich jak onerror, ani adresów javascript: [3]. Domyślnie blokowane są też eval() i podobne funkcje, chyba że polityka zawiera słowo unsafe-eval [3].

Skrypt osadzony można dopuścić słowem unsafe-inline, jednorazowym kodem (ang. nonce) albo skrótem kryptograficznym treści: SHA-256, SHA-384 lub SHA-512 [1]. Nonce musi być inny w każdej odpowiedzi HTTP i nieprzewidywalny [3]. Wyrażenie strict-dynamic pozwala skryptowi już dopuszczonemu ładować kolejne skrypty, więc zaufanie przechodzi dalej bez listy domen [1]. Skrypt wstrzyknięty przez atakującego nie zna właściwego nonce, więc przeglądarka odmawia jego wykonania i wysyła raport o naruszeniu [3].

RYS. 1.1Wstrzyknięty skrypt zablokowany

Nagłówek Content-Security-Policy-Report-Only pozwala sprawdzić politykę bez jej egzekwowania: przeglądarka tylko monitoruje skutki [1]. Jeśli odpowiedź zawiera oba nagłówki, polityka z Content-Security-Policy jest egzekwowana, a polityka Report-Only generuje wyłącznie raporty [3]. Raporty trafiają do odbiorcy wskazanego dyrektywą report-to [2]. Kolejne nagłówki Content-Security-Policy mogą uprawnienia dokumentu tylko dalej zawężać [2].

RYS. 1.2Wdrożenie CSP

Standardy i specyfikacje

  • CSP Level 3 (W3C, szkic roboczy) definiuje dyrektywy, źródła nonce i hash, wyrażenie strict-dynamic oraz nagłówek Report-Only. Dyrektywa report-to zastępuje wycofywaną report-uri [1].
  • Politykę można dostarczyć także elementem meta z atrybutem http-equiv. W tej formie nie działają nagłówek Report-Only ani dyrektywy report-uri, frame-ancestors i sandbox [1].
  • OWASP zaleca politykę ścisłą script-src 'nonce-{RANDOM}' 'strict-dynamic'; object-src 'none'; base-uri 'none'; [4]. Dyrektywa frame-ancestors ogranicza osadzanie strony w ramkach, więc CSP chroni także przed clickjackingiem [4].

Zagrożenia i skutki

XSS bez drugiej warstwy. OWASP zastrzega, że CSP nie może być jedynym zabezpieczeniem przed XSS i nie zwalnia z dobrych praktyk programistycznych, takich jak kodowanie danych wyjściowych [4]. Bez polityki twórca strony nie kontroluje, jakie zasoby dokument pobiera i wykonuje [1], więc skrypt wstrzyknięty przez lukę w aplikacji działa jak każdy inny.

Polityka obecna, ale nieskuteczna. Weichselbaum, Spagnuolo, Lekies i Janc (Google, ACM CCS 2016) przeanalizowali 26 011 unikalnych polityk z 1 680 867 hostów [5]. Nieskutecznych okazało się 94,68% polityk, które próbowały ograniczyć wykonywanie skryptów, a 99,34% hostów z CSP używało polityk niedających korzyści wobec XSS [5]. Źródłem obejść były listy dozwolonych domen: 75,81% polityk używało list pozwalających obejść CSP, a 14 z 15 domen najczęściej dopuszczanych dla skryptów miało niebezpieczne punkty końcowe [5]. Autorzy zaproponowali polityki oparte na nonce z wyrażeniem strict-dynamic [5]. OWASP ostrzega podobnie, że zbyt szczegółowa albo zbyt liberalna polityka nieścisła prowadzi do obejść [4].

WordPress i skrypty osadzone. Przy ścisłej CSP każdy element script musi mieć atrybut nonce zgodny z polityką [6]. WordPress dodał funkcje przekazujące atrybuty, np. nonce, do znaczników skryptów, także osadzonych, dopiero w wersji 5.7 z 2021 roku; zespół rdzenia opisał to jako drogę do CSP w rdzeniu, wtyczkach i motywach [6]. Wtyczki i motywy nie powinny nadpisywać atrybutu nonce, jeśli nie odpowiadają za integrację z CSP [6]. Skrypt osadzony wypisany z pominięciem tych funkcji, bez nonce i bez skrótu, zostanie przez politykę ścisłą zablokowany [3].

Zbyt ostra polityka. Egzekwowana polityka blokuje także prawowite skrypty bez nonce albo skrótu [3], dlatego zmiany sprawdza się najpierw w trybie Report-Only [1].

Przykłady

Nagłówek albo sytuacjaSkutek w przeglądarce
brak nagłówkabrak polityki: dokument pobiera i wykonuje zasoby bez ograniczeń CSP [1]
default-src 'self'zasoby z własnego pochodzenia; skrypty osadzone i eval() zablokowane [2] [3]
script-src 'nonce-{RANDOM}' 'strict-dynamic'; object-src 'none'; base-uri 'none';polityka ścisła zalecana przez OWASP [4]
script-src 'self' 'unsafe-inline'skrypty osadzone dozwolone, także wstrzyknięte [1] [3]
lista popularnych domen w script-srcw badaniu Google zwykle do obejścia [5]
tylko Content-Security-Policy-Report-Onlyraporty naruszeń, bez blokowania [1]
polityka w elemencie metadziała bez frame-ancestors, sandbox i report-uri [1]
TAB. 1.1Przypisy6
  1. [1] Content Security Policy Level 3 · W3C
  2. [2] Content-Security-Policy header · MDN Web Docs
  3. [3] Content Security Policy (CSP) · MDN Web Docs
  4. [4] Content Security Policy Cheat Sheet · OWASP
  5. [5] Weichselbaum, Spagnuolo, Lekies, Janc — CSP Is Dead, Long Live CSP! On the Insecurity of Whitelists and the Future of Content Security Policy (ACM CCS 2016) · Google Research
  6. [6] Introducing script attributes related functions in WordPress 5.7 · Make WordPress Core
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: Content-Security-Policy
TAB. 3.1Pomiarpliki: 6
Obszar i ważnośćBezpieczeństwo · średnia (B20)
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 na wstępie; strony w przebiegu sprawdzane po kolei.
  2. HEAD https://domena (wyłącznie strona główna) z podążaniem za przekierowaniami — nagłówki czytane tylko z odpowiedzi końcowej; kod 405 = druga próba GET.
  3. Sprawdzana tylko obecność Content-Security-Policy; wartość polityki nie jest czytana, a Content-Security-Policy-Report-Only i polityka w znaczniku meta się nie liczą.
  4. Jedno żądanie obsługuje sześć nagłówków bezpieczeństwa.
Typ wyniku0 albo 1 ustalenie missing_csp
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_csp; nagłówek z dowolną wartością, także pustą albo z unsafe-inline, = 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_csp
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. Content-Security-Policy-Report-Only nie jest liczony: strona wdrażająca politykę w trybie testowym dostaje missing_csp, choć katalog ustaleń zaleca start właśnie od report-only.
  2. Polityka w znaczniku meta jest niewidoczna — sonda robi HEAD i czyta tylko nagłówki.
  3. Sprawdzana sama obecność: polityka z unsafe-inline albo z listą domen przechodzi jako ok, choć takie polityki zwykle nie chronią przed XSS.
  4. Severity niespójna: helper normalna, polityka i katalog ustaleń niska.
  5. Błąd sieci albo timeout zwraca pustą listę — nieodróżnialne od „nagłówek jest”; odpowiedź 403 z WAF-a albo 5xx oceniana jak zwykła strona.
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_csp: bramka polityki zamknięta (gate=false) — zostaje odczyt i werdykt „bez_subtaska” w bazie skanera, sprawa nie powstaje, więc usterka „Brak polityki bezpieczeństwa treści” (waga 1) nie wchodzi do wskaźnika strony. Utwardzenie, nie incydent (waga 1 w katalogu usterek).

KodFindingSeverityPewnośćSkutekFinding / alarmWaga → ocenaCo zrobić
B20.01Brak Content-Security-Policymissing_cspNiskaEwidentnebez wpływunie / niewaga 1 → ocena 2 (zielony)Wdróż CSP, zaczynając od trybu report-only.
TAB. 3.3B20.01 · Brak Content-Security-Policywersja 1 · 01.10.2026
Kod i kluczB20.01 · missing_csp · w tabeli typów
Co znaczyBrak warstwy ochrony przed XSS.
Kiedy powstajeEmitowany, gdy w nagłówkach odpowiedzi (nazwy lowercase) brak 'content-security-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. Content-Security-Policy-Report-Only nie liczy się jako obecność.
Severity · pewnośćNiska · Ewidentne
Skutek dla stronybez wpływu · tylko statystyka (gate=false) · alarm nie
Waga → ocenawaga 1 → ocena 2 (zielony)
KlasyfikacjaCWE: CWE-693 (Protection Mechanism Failure)OWASP Top 10:2025: A02:2025 Security MisconfigurationOWASP ASVS 5.0.0: 3.4.3OCSF 1.9.0: Compliance Finding (class_uid 2003)
Rekord OCSFfinding_info.analytic.uid = "B20.01" · analytic.name = "missing_csp" · finding_info.types = ["B20 Content-Security-Policy"]
Co zrobićWdróż CSP, zaczynając od trybu report-only.
Wersje typu
  1. v1 · 01.10.2026 — kod B20.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. Kolejność po pierwszych pięciu grupach ustali miara trafności.

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