Utilia

Generátor CSP (Content Security Policy)

Vytvor hlavičku Content-Security-Policy, značku meta aj verziu Report-Only s predvoľbami, nonce a hashmi SHA-256 a skontroluj existujúcu politiku.

Začni predvoľbou

Hostitelia Google sú príklady z odporúčaní Google k CSP pre značku Google. Google ich občas mení: skontroluj aktuálnu dokumentáciu a odstráň, čo nepoužívaš.

Direktívy

Zdroje oddelené medzerou. Prázdne pole direktívu vynechá (direktívy typu fetch sa potom vrátia k default-src).

Rýchle pridanie

Nonce musí byť pri každej odpovedi nová náhodná hodnota, ktorú vygeneruje tvoj server a zopakuje v každom <script nonce="…">. Pevne daný nonce nechráni nič.

Hash vloženého skriptu alebo štýlu

Hash sa počíta z presného textu medzi značkami vrátane medzier a zalomení riadkov: každá zmena vyžaduje nový hash. Vložené obsluhy udalostí (onclick=…) potrebujú aj 'unsafe-hashes'.

Hlásenia o porušeniach

Pridá report-uri (staršie prehliadače) a report-to s hlavičkou Reporting-Endpoints.

V značke <meta> prehliadače ignorujú frame-ancestors, report-uri, report-to a sandbox a Report-Only nie je podporovaný. Daj značku na začiatok <head>: platí len pre obsah, ktorý nasleduje za ňou.

Posúdenie tejto politiky

Vyhodnotiť existujúcu politiku

Ako vytvoriť politiku

  1. Vyber východiskový bod v časti Začni predvoľbou: Prísna (nonce + strict-dynamic), Uzamknutý statický web, Typický web alebo Typický web + Google Analytics / Ads. Editor sa otvorí s predvoľbou typického webu.
  2. Uprav Direktívy. Každé pole prijíma zdroje oddelené medzerou; prázdne pole direktívu vynechá.
  3. Cez Rýchle pridanie pripoj kľúčové slovo k vybranej Direktíve: 'self', 'none', 'unsafe-inline', 'strict-dynamic', https:, data:… Pridať nonce vloží náhodný 128-bitový nonce.
  4. Ak chceš povoliť konkrétny vložený skript bez 'unsafe-inline', vlož ho (alebo HTML okolo neho) do poľa Hash vloženého skriptu alebo štýlu a klikni na Vypočítať SHA-256 a pridať.
  5. Zaškrtni upgrade-insecure-requests, ak niektoré staré URL stále používajú http://, a voliteľne zadaj URL koncového bodu pre hlásenia (voliteľné).
  6. Skopíruj HTTP hlavičku, Hlavičku Report-Only (test bez blokovania) alebo HTML značku . Posúdenie tejto politiky sa aktualizuje počas písania.

Ak chceš skontrolovať politiku, ktorú už máš, vlož ju do časti Vyhodnotiť existujúcu politiku a klikni na Vyhodnotiť politiku; Načítať do editora ju skopíruje do polí.

Všetko beží vo tvojom prehliadači. Nič, čo zadáš, sa neodosiela na server.

Čo robí Content Security Policy

CSP hovorí prehliadaču, z ktorých pôvodov smie stránka načítavať skripty, štýly, obrázky, písma, rámce a spojenia. Jej hlavnou úlohou je obmedziť cross-site scripting (XSS): aj keď útočník do tvojej stránky vloží kód, dobrá politika zabráni spusteniu vloženého skriptu. Ovláda tiež, kto môže tvoju stránku vkladať do rámca (frame-ancestors), kam sa smú odosielať formuláre (form-action) a na čo môže ukazovať <base> (base-uri).

Direktívy typu fetch, napríklad img-src alebo font-src, sa pri absencii vracajú k default-src. base-uri, form-action a frame-ancestors sa k nemu nevracajú, preto ich posúdenie žiada výslovne.

Nonce, hashe a strict-dynamic

Povolenie hostiteľov (script-src https://cdn.example.com) vyzerá bezpečne, ale často sa dá obísť: veľké domény hostia koncové body JSONP a staré knižnice, ktoré môže útočník zneužiť. Prístup odporúčaný bezpečnostnými tímami prehliadačov je prísna CSP: každý legitímny <script> nesie nonce, ktorý server vygeneroval pre danú odpoveď, alebo je povolený podľa hashu, a 'strict-dynamic' týmto dôveryhodným skriptom dovolí načítať skripty, ktoré potrebujú. V takom nastavení sú https: a 'unsafe-inline' len zálohou pre veľmi staré prehliadače; moderné ich ignorujú.

Nonce funguje, len ak sa mení pri každej odpovedi a nedá sa uhádnuť. Ten, ktorý vloží Pridať nonce, je len ukážka: tvoj server alebo framework si musí vygenerovať vlastný. Hash pokrýva presné bajty vloženého kódu, takže po preformátovaní skriptu treba nový hash.

Hlavička, Report-Only a značka meta

Politiku posielaj ako HTTP hlavičku odpovede všade, kde to ide. Najprv ju nasaď ako Content-Security-Policy-Report-Only: prehliadače hlásia porušenia (do konzoly a na tvoj koncový bod, ak si ho nastavil) bez toho, aby niečo blokovali, takže stránky môžeš opraviť ešte pred vynucovaním. Nastavenia hlásení pridávajú report-uri pre staršie prehliadače a report-to s hlavičkou Reporting-Endpoints.

Verzia <meta http-equiv> sa hodí na statický hosting, ale prehliadače v nej ignorujú frame-ancestors, report-uri, report-to a sandbox a značka meta pre Report-Only neexistuje. Nástroj tieto direktívy zo značky odstráni a upozorní na to.

Ako čítať posúdenie

Posúdenie prechádza politiku a zoraďuje nálezy podľa závažnosti: Vysoká, Stredná, Nízka a Info. Hľadá preklepy v názvoch direktív, nezabalené kľúčové slová, duplicitné direktívy, zástupné znaky, schémy ako data: v script-src, chýbajúce object-src, base-uri a frame-ancestors a spoliehanie sa na zoznam hostiteľov. Je to automatická kontrola podľa známych pravidiel, nie záruka bezpečnosti: politiku vždy otestuj na skutočnej stránke, najlepšie najprv v režime Report-Only.

Často kladené otázky

Je 'unsafe-inline' v style-src problém?

Je menej nebezpečné ako v script-src a je veľmi bežné, pretože veľa knižníc nastavuje vložené štýly. Vložené CSS môže stránku stále znehodnotiť alebo vyzradiť údaje, preto ho posúdenie uvádza s nízkou závažnosťou.

Sú hostitelia Google Analytics úplní?

Sú to príklady z odporúčaní Google k CSP pre značku Google. Google ich časom upravuje a môžu byť potrebné regionálne domény; skontroluj aktuálnu dokumentáciu Google a odstráň, čo nepoužívaš. Vložený úryvok gtag.js tiež potrebuje nonce alebo hash.

Prečo moja politika blokuje moje vlastné vložené skripty?

Keď je script-src nastavené bez 'unsafe-inline', zablokuje sa každý vložený <script> aj atribút onclick=. Presuň kód do súboru alebo pridaj nonce či hash.

Nahrádza CSP ošetrovanie vstupu od používateľov?

Nie. CSP je druhá línia obrany. Naďalej ošetruj výstup a overuj vstup; politika obmedzí škody, keď niečo prejde.

Môžem mať viac politík?

Áno: ak stránka dostane viac hlavičiek CSP, zdroj musí vyhovovať všetkým. Do vyhodnocovača vkladaj vždy jednu politiku.