Generador de Content Security Policy (CSP)
Crea la capçalera Content-Security-Policy, l'etiqueta meta i la versió Report-Only amb plantilles, nonces i hashes SHA-256, i revisa una política existent.
Comença amb una plantilla
Els servidors de Google són exemples extrets de la guia de CSP de Google per a l'etiqueta de Google. Google els canvia de tant en tant: consulta la documentació actual i elimina el que no facis servir.
En una etiqueta <meta> els navegadors ignoren frame-ancestors, report-uri, report-to i sandbox, i Report-Only no és compatible. Posa l'etiqueta al principi del <head>: només afecta el contingut que ve després.
Revisió d'aquesta política
Aquestes comprovacions no han trobat cap punt feble.
Avalua una política existent
Com crear una política
- Tria un punt de partida a Comença amb una plantilla: Estricta (nonce + strict-dynamic), Lloc estàtic molt restringit, Lloc web típic o Típic + Google Analytics / Ads. L’editor s’obre amb la plantilla del lloc web típic.
- Ajusta les Directives. Cada camp admet fonts separades per espais; si el deixes buit, la directiva s’omet.
- Amb Afegeix ràpidament pots afegir una paraula clau a la Directiva triada:
'self','none','unsafe-inline','strict-dynamic',https:,data:… Afegeix un nonce hi insereix un nonce aleatori de 128 bits. - Per permetre un script en línia concret sense
'unsafe-inline', enganxa’l (o l’HTML que l’envolta) a Calcula el hash d’un script o estil en línia i fes clic a Calcula el SHA-256 i afegeix. - Marca upgrade-insecure-requests si encara tens URL antigues amb
http://, i si vols, indica una URL del punt de recepció d’informes (opcional). - Copia la Capçalera HTTP, la Capçalera Report-Only (prova sense bloquejar) o l’Etiqueta HTML . La Revisió d’aquesta política s’actualitza mentre escrius.
Per auditar una política que ja tens, enganxa-la a Avalua una política existent i fes clic a Avalua la política; Carrega a l’editor la copia als camps.
Tot funciona al teu navegador: la política que escrius o enganxes no s’envia a cap servidor.
Què fa una Content Security Policy
Una CSP indica al navegador de quins orígens pot carregar una pàgina scripts, estils, imatges, tipus de lletra, marcs i connexions. La seva funció principal és limitar els atacs de cross-site scripting (XSS): encara que un atacant injecti codi a la teva pàgina, una bona política impedeix que l’script injectat s’executi. També controla qui pot incrustar la teva pàgina (frame-ancestors), on es poden enviar els formularis (form-action) i a què pot apuntar <base> (base-uri).
Les directives de càrrega, com img-src o font-src, recorren a default-src quan falten. En canvi, base-uri, form-action i frame-ancestors no ho fan, i per això la revisió te les demana explícitament.
Nonces, hashes i strict-dynamic
Permetre servidors concrets (script-src https://cdn.example.com) sembla segur, però sovint es pot eludir: els dominis grans allotgen punts finals JSONP i biblioteques antigues que un atacant pot reutilitzar. L’enfocament que recomanen els equips de seguretat dels navegadors és una CSP estricta: cada <script> legítim porta un nonce que el servidor genera a cada resposta, o bé es permet pel seu hash, i 'strict-dynamic' deixa que aquests scripts de confiança carreguin els que necessiten. En aquest esquema, https: i 'unsafe-inline' només són una reserva per a navegadors molt antics; els moderns les ignoren.
Un nonce només funciona si canvia a cada resposta i és impredictible. El que insereix Afegeix un nonce és només un exemple: el teu servidor o framework n’ha de generar un de propi. Un hash cobreix els bytes exactes del codi en línia, de manera que si reformates l’script, en necessites un de nou.
Capçalera, Report-Only i etiqueta meta
Sempre que puguis, envia la política com a capçalera de resposta HTTP. Desplega-la primer com a Content-Security-Policy-Report-Only: els navegadors informen de les violacions (a la consola i, si n’has definit un, al teu punt de recepció) sense bloquejar res, i així pots arreglar les pàgines abans d’aplicar-la. Els paràmetres d’informes afegeixen report-uri per als navegadors antics i report-to amb una capçalera Reporting-Endpoints.
La versió amb <meta http-equiv> va bé en allotjaments estàtics, però els navegadors hi ignoren frame-ancestors, report-uri, report-to i sandbox, i no existeix cap etiqueta meta Report-Only. L’eina treu aquestes directives de l’etiqueta i t’ho indica.
Preguntes freqüents
'unsafe-inline' a style-src és un problema?
És menys perillós que a script-src i molt habitual, perquè moltes biblioteques apliquen estils en línia. Tot i això, un CSS injectat pot desfigurar una pàgina o filtrar dades, i per això la revisió ho marca amb gravetat baixa.
Els servidors de Google Analytics estan al complet?
Són exemples de la guia de CSP de Google per a l’etiqueta de Google. Google els ajusta amb el temps i potser necessitaràs dominis regionals: consulta la documentació actual de Google i elimina el que no facis servir. El fragment en línia de gtag.js també necessita un nonce o un hash.
Per què la meva política bloqueja els meus propis scripts en línia?
Quan script-src està definit sense 'unsafe-inline', es bloqueja tot <script> en línia i tot atribut onclick=. Passa el codi a un fitxer, o afegeix un nonce o un hash.
Una CSP substitueix l'escapament de les dades de l'usuari?
No. Una CSP és una segona línia de defensa. Continua escapant la sortida i validant l’entrada: la política limita els danys quan alguna cosa se’t passa per alt.
Puc tenir diverses polítiques?
Sí: si una pàgina rep diverses capçaleres CSP, un recurs ha de complir-les totes. Enganxa una sola política cada vegada a l’avaluador.
Eines relacionades
- Generador de redireccions .htaccess Genera redireccions 301 i 302 per a .htaccess o Nginx, força HTTPS i www, mou un domini i arregla les barres finals, amb detecció de bucles i cadenes.
- Generador de metaetiquetes Generador gratuït de metaetiquetes per al títol, la meta descripció, la URL canònica, robots i viewport, amb comprovació de longituds i HTML ben escapat.
- Generador de hash (MD5, SHA-256) Genera hashos MD5, SHA-1, SHA-256 i SHA-512 de text o de fitxers de qualsevol mida i verifica sumes de verificació. Tot s'executa al navegador.
- Generador de robots.txt Crea un fitxer robots.txt vàlid amb grups d'user-agent, regles Allow i Disallow, mapes del web i crawl-delay, amb comprovació dels errors més habituals.