Generator CSP

Se bifează directivele și sursele, iar această pagină asamblează un Content-Security-Policy corect, pe o singură linie, pentru antetul de răspuns sau eticheta <meta> — plus notele care contează: ce directive nu revin niciodată la default-src, când un hash sau un nonce suprascrie în tăcere unsafe-inline și ce dezactivează strict-dynamic. Un generator integrat de hash-uri SHA-256/384/512 transformă scripturile și stilurile inline în surse 'sha256-…'. Totul rulează în browser; nimic nu se încarcă.
Directivele nebifate lipsesc pur și simplu din politică; o bifă fără surse selectate este ignorată. 'none' anulează celelalte casete din rândul său. Caseta surse suplimentare acceptă o listă separată prin virgulă: nume de gazdă (cdn.example.com), scheme (https:), hash-uri și nonce-uri, cu sau fără ghilimele.
directivă 'self''none''unsafe-inline' 'unsafe-eval''strict-dynamic' data:blob: surse suplimentare
Aceste patru nu revin la default-src: dacă sunt omise, înseamnă „nicio restricție”, deci o politică completă le setează explicit.
directivă'self''none'surse suplimentare

nonce pentru script
report-uri
report-to
Nimic construit încă. Se bifează câteva surse și se apasă Construire politică, sau se încarcă exemplul de referință OWASP.
Se lipește conținutul exact dintre <script> și </script> (sau blocul de stil) — octet cu octet, fără nicio linie nouă la început sau la sfârșit — și se alege un algoritm. Rezultatul este sursa 'sha256-…' pe care o așteaptă CSP 3.
Ieșirea hash-ului apare aici.
Se livrează ca antet, nu ca etichetă meta, ori de câte ori este posibil. Antetul de răspuns este CSP complet: frame-ancestors, report-uri și report-to funcționează doar acolo, iar un antet se aplică înainte de analizarea primului octet de HTML. Eticheta meta este soluția de rezervă pentru fișierele statice fără configurare de server. Se verifică anteturile pe care le trimite efectiv site-ul pe verificatorul de anteturi de securitate și se descompun blocurile brute de răspuns pe analizorul de antete HTTP.
Autotest
Rerulează constructorul față de stări fixe: ordinea surselor, excluderea reciprocă 'none', șirul de referință OWASP, ghilimelele pentru nonce și hash, notele despre lipsa revenirii pentru base-uri / form-action / frame-ancestors, unsafe-inline suprascris de nonce sau hash, notele strict-dynamic, numele antetelor Report-Only, excluderile pentru eticheta meta, generatorul de hash-uri față de vectori SHA de referință independenți și căile negative. Nimic nu se trimite nicăieri.
Ce este o politică de securitate a conținutului?
Într-o propoziție: un CSP este o listă albă pe care serverul o trimite împreună cu pagina și care îi spune browserului exact de unde pot veni scripturile, stilurile, imaginile și conexiunile — deci chiar dacă un atacator injectează HTML, scriptul injectat tot nu se încarcă, pentru că sursa lui nu este pe listă.
Cele trei grupe de directive
GrupăExempleComenziRevine la default-src?
Directive de tip fetchscript-src, style-src, img-src, connect-src, font-src, object-src, frame-src, worker-src, media-src, manifest-srcunde poate fi încărcat fiecare tip de conținutda — o directivă neselectată moștenește default-src
Directive de documentbase-uri, form-action, frame-ancestors, sandboxce poate face singură pagina (poate fi încorporată, poate trimite formulare către, rezolvă URL-uri relative față de)nu — fiecare trebuie setată explicit
Raportare și diversereport-uri, report-to, upgrade-insecure-requestsunde ajung rapoartele de încălcare și actualizarea URL-urilor vechinu (nu sunt directive de tip fetch)
Cele mai ascuțite margini, câte un paragraf pentru fiecare

'unsafe-inline' față de hash-uri și nonce-uri. Dacă o directivă conține un nonce sau orice sursă de tip hash, CSP 3 spune că 'unsafe-inline' este ignorat — rămâne acolo doar pentru browserele foarte vechi. De aceea „am adăugat un nonce și am păstrat unsafe-inline pentru siguranță” înseamnă de fapt că browserele moderne aplică nonce-ul. Generatorul semnalează combinația, pentru ca să fie o decizie, nu o întâmplare.

strict-dynamic dezactivează lista de permise. Cu strict-dynamic în script-src, sursele de gazdă, schemele, 'self', 'unsafe-inline' și data: sunt toate ignorate pentru scripturi; contează doar nonce-urile și hash-urile, iar scripturile pe care acestea le încarcă pot încărca și alte scripturi. Este modul modern de a rula scripturi de încărcare — dar face restul listei script-src decorativ.

Etichetele meta sunt de rang secund. frame-ancestors, report-uri și report-to sunt ignorate în <meta http-equiv>. Generatorul arată ce părți ale politicii nu s-ar aplica în tăcere.

Greșeli frecvente
  • Începerea cu default-src * plus o listă lungă de excepții. Se lucrează invers: un default-src 'self' strâns, apoi se lărgesc doar directivele care au nevoie. Politicile înguste eșuează zgomotos în timpul testării; cele largi eșuează în tăcere pentru totdeauna.
  • Livrarea script-src 'unsafe-inline' 'unsafe-eval' și declararea lucrului terminat. Politica aceasta blochează aproape nimic din ce vrea un atac XSS. Se pune nonce sau hash pe scripturi, se adaugă strict-dynamic și se lasă report-only activ în producție pentru a prinde regresiile.
  • Uitarea că default-src nu acoperă totul. base-uri, form-action, frame-ancestors și sandbox nu au nicio revenire — cea mai citată lacună în implementările CSP reale.
  • Testarea mai întâi în modul de aplicare. Se rulează în Report-Only cu un colector timp de o săptămână, se citesc rapoartele, apoi se trece la aplicare. O politică ce strică plata este mai rea decât lipsa oricărei politici.
  • Hash-uri calculate diferit pentru spații. Un hash acoperă octeții exacți ai blocului inline; un pas de build „util” care taie caracterele de linie nouă de la sfârșit schimbă fiecare hash. Hash-urile se generează din ce se livrează, nu din sursă.
Întrebări frecvente

Am nevoie de default-src dacă enumăr fiecare directivă? Nu, dar păstrarea lui ca bază minimă este o bună practică: noile directive de tip fetch din browserele viitoare revin atunci la linia de bază, nu la „permis”.

Ce face de fapt upgrade-insecure-requests? Îi spune browserului să rescrie fiecare URL http:// pe care ar încărca-o pagina — imagini, stiluri, cereri fetch — în https:// înainte de a-l solicita. Este un instrument de migrare; starea finală sunt pagini fără niciun URL http://.

Nonce sau hash? Nonce când controlezi răspunsul serverului (o valoare aleatoare per răspuns, atât în antet, cât și în fiecare etichetă de script). Hash când HTML-ul este static sau este stocat în cache. Niciodată un nonce static — un nonce care nu se schimbă este doar unsafe-inline cu pași în plus.

De ce se livrează politica, dar încălcările nu ajung? Se verifică dacă se află în modul Report-Only (doar rapoarte), dacă report-uri indică un colector care acceptă POST și dacă s-au configurat și mecanismele Reporting-Endpoints / Report-To pe care le cere directiva modernă report-to.

Înlocuiește CSP celelalte protecții? Nu. Este un singur strat: se păstrează escaparea ieșirii, cookie-urile sub HttpOnly și Secure, HSTS. Verificatorul de anteturi de securitate de pe acest site notează întregul set.