Przejdź do głównej treści
Bezpieczeństwo stron w UE: 10 kroków do lepszej oceny · Część 3

Content Security Policy: Najważniejsza obrona, której brakuje 89% witryn

CSP chroni przed XSS, iniekcją i kradzieżą danych — jedna linia konfiguracji, której brakuje 89% witryn w UE. Jak ją wdrożyć poprawnie.

· SiteGuardian

Część 3 serii „Bezpieczeństwo stron w UE: 10 kroków do lepszej oceny"


Dlaczego CSP ma znaczenie

Cross-Site Scripting (XSS) jest najczęstszą podatnością aplikacji webowych od ponad 20 lat. Atakujący wstrzykuje JavaScript do Twojej witryny — przez formularz, parametr URL, komentarz. Przeglądarka odwiedzającego wykonuje kod, ponieważ nie potrafi odróżnić go od prawidłowej zawartości strony.

Content Security Policy (CSP) rozwiązuje ten problem: jawnie definiujesz, z jakich źródeł przeglądarka może akceptować skrypty, style, obrazy i inne zasoby. Wszystko inne jest blokowane.

Wskaźnik wdrożenia w UE: 10,8%. Dziewięć na dziesięć witryn nie ma nagłówka CSP.


Co mówią dane

Z SiteGuardian Benchmark obejmującego ponad 700 000 europejskich witryn:

  • 10,8% ma nagłówek CSP
  • Witryny z security.txt mają CSP w 47% przypadków — 4,7x częściej
  • Permissions-Policy (powiązany nagłówek): tylko 6,4%

Wdrażanie CSP krok po kroku

Największa przeszkoda: zbyt restrykcyjne CSP psuje stronę. Google Analytics przestaje się ładować, osadzone filmy YouTube znikają, style inline przestają działać.

Krok 1: Tryb Report-Only (nic nie psuje)

Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report

Przeglądarka raportuje naruszenia, ale niczego nie blokuje. Widzisz, jakich zewnętrznych źródeł używa Twoja strona, bez ryzyka awarii.

Krok 2: Zidentyfikuj źródła

Monitoruj raporty przez 1-2 tygodnie. Typowe źródła, które trzeba będzie dopuścić:

  • Google Analytics: https://www.googletagmanager.com https://www.google-analytics.com
  • Google Fonts: https://fonts.googleapis.com https://fonts.gstatic.com
  • YouTube Embeds: https://www.youtube.com https://www.youtube-nocookie.com
  • Twoje CDN: https://cdn.twoja-domena.pl

Krok 3: Zbuduj politykę

Content-Security-Policy: default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; img-src 'self' data: https:; frame-src https://www.youtube-nocookie.com

Krok 4: Aktywuj

Usuń -Report-Only z nazwy nagłówka. Dokładnie przetestuj stronę.


Kluczowe dyrektywy

Dyrektywa Kontroluje Zalecenie
default-src Domyślne dla wszystkiego 'self'
script-src JavaScript 'self' + jawne domeny
style-src CSS 'self' 'unsafe-inline' (często konieczne)
img-src Obrazy 'self' data: https:
font-src Czcionki 'self' + Google Fonts w razie potrzeby
connect-src XHR/Fetch 'self' + domeny API
frame-src iframe Tylko jawne domeny
object-src Flash/Java 'none' (zawsze)
base-uri Tag base 'self'

Nginx

add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; object-src 'none'; base-uri 'self'" always;

Apache

Header always set Content-Security-Policy "default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; object-src 'none'; base-uri 'self'"

Typowe błędy

1. unsafe-inline dla skryptów. script-src 'unsafe-inline' pozwala na dowolny skrypt inline — czyniąc całe CSP bezużytecznym przeciwko XSS. Używaj nonce'ów lub haszy zamiast tego.

2. * jako źródło. default-src * pozwala na wszystko ze wszystkich miejsc. To nie jest polityka, to placebo.

3. Zbyt restrykcyjny start. Zawsze zaczynaj od Report-Only. CSP, które psuje stronę i zostaje natychmiast wyłączone, nikogo nie chroni.


Kontekst regulacyjny

  • NIS2 art. 21 ust. 2 lit. d) — bezpieczeństwo w rozwoju i utrzymywaniu systemów informatycznych
  • RODO art. 32 — XSS może prowadzić do naruszeń danych (przejęcie sesji, kradzież ciasteczek)
  • PCI DSS 4.0 — wymaganie 6.4.3 jawnie nakazuje CSP dla stron płatności

Sprawdź swoje CSP

SiteGuardian nie tylko wykrywa, czy nagłówek CSP istnieje, ale analizuje dyrektywy pod kątem znanych słabości:

https://siteguardian.io/scan


W następnym tygodniu w części 4: DNSSEC — dlaczego 84% domen w UE nie ma ochrony przed spoofingiem DNS.

Jak wypada Twoja strona na tle innych?

SiteGuardian skanuje Twoją domenę w sześciu wymiarach bezpieczeństwa — za darmo, natychmiast, bez rejestracji.

Zeskanuj swoją stronę

Bezpieczeństwo stron w UE: 10 kroków do lepszej oceny

Ten artykuł jest częścią cotygodniowej serii o najlepszych praktykach bezpieczeństwa stron WWW w UE.

SiteGuardian

2026-04-27

RSS