Přeskočit na obsah
_CORE
AI & agentní systémy Podnikové informační systémy Cloud & Platform Engineering Datová platforma & integrace Bezpečnost & compliance QA, testování & observabilita IoT, automatizace & robotika Mobilní & digitální produkty Bankovnictví & finance Pojišťovnictví Veřejná správa Obrana & bezpečnost Zdravotnictví Energetika & utility Telco & média Průmysl & výroba Logistika & e-commerce Retail & věrnostní programy
Reference Technologie Blog Know-how Nástroje
O nás Spolupráce Kariéra
CS EN DE
Pojďme to probrat

Content Security Policy (CSP) — praktický průvodce

15. 10. 2022 Aktualizováno: 27. 03. 2026 1 min čtení intermediate
Tento článek byl publikován v roce 2022. Některé informace mohou být zastaralé.

CSP říká prohlížeči, odkud smí načítat skripty, styly, obrázky a další zdroje. Správně nastavený CSP zastaví většinu XSS útoků, protože i když útočník injektuje škodlivý skript do stránky, prohlížeč ho odmítne spustit, pokud neodpovídá politice. CSP je nejúčinnější obrana proti XSS po sanitizaci vstupu — a na rozdíl od sanitizace funguje i proti zero-day zranitelnostem.

Základní CSP

Content-Security-Policy:
  default-src 'self';
  script-src 'self' 'nonce-abc123';
  style-src 'self' 'unsafe-inline';
  img-src 'self' data: https:;
  connect-src 'self' https://api.example.com;
  frame-ancestors 'none';

Každá direktiva definuje povolené zdroje pro konkrétní typ obsahu. default-src 'self' povolí pouze zdroje z vlastní domény. script-src s nonce umožňuje spouštět jen skripty s odpovídajícím nonce atributem. frame-ancestors 'none' zabraňuje vložení stránky do iframe (ochrana proti clickjacking).

Nonce-based CSP

import secrets

@app.after_request
def add_csp(response):
    nonce = secrets.token_urlsafe(32)
    response.headers['Content-Security-Policy'] = f"script-src 'self' 'nonce-{nonce}'"
    return response

Nonce (number used once) je náhodná hodnota generovaná pro každý request. Každý legitimní <script> tag dostane atribut nonce="abc123" a CSP povolí jen skripty s odpovídajícím nonce. Injektovaný skript bez správného nonce se nespustí. Nonce je bezpečnější než hash-based přístup, protože nevyžaduje předem znát obsah skriptu.

Postupné nasazení

  1. Report-Only s permisivní politikou — zjistíte, co by CSP blokoval
  2. Analyzujte reporty — identifikujte legitimní zdroje a inline skripty
  3. Zpřísněte politiku — odstraňte nepotřebné zdroje
  4. Přepněte na enforcement — CSP začne blokovat
  5. Monitorujte reporty — odhalte nové zdroje a potenciální útoky

Nasazení CSP bez Report-Only fáze typicky rozbije aplikaci. Reporting endpoint (report-uri nebo report-to) sbírá informace o blokovaných zdrojích a umožňuje iterativně zpřísňovat politiku.

Klíčový takeaway

CSP je nejúčinnější obrana proti XSS. Začněte s Report-Only, postupně zpřísňujte a monitorujte reporty. Nonce-based CSP je doporučený přístup pro moderní aplikace.

securitycspxssheaders
Sdílet:

CORE SYSTEMS tým

Stavíme core systémy a AI agenty, které drží provoz. 15 let zkušeností s enterprise IT.