CSP Builder
Convierte los hosts que cside observa en tu sitio en una cabecera Content-Security-Policy que puedes desplegar, en Protection > CSP Builder.
CSP Builder convierte los hosts que cside observa en tu sitio en una cabecera Content-Security-Policy que puedes desplegar. Se encuentra en Protection > CSP Builder en la barra lateral, junto a CSP Violations.
Escribir una Content Security Policy a mano exige conocer cada host desde el que cargan tus paginas, incluidos los que tus proveedores cargan en tu nombre. cside ya observa esas cargas, asi que el builder parte de lo que realmente ocurrio en tu sitio en lugar de un archivo en blanco.
CSP Builder se esta habilitando de forma gradual. Si aun no lo ves en tu barra lateral, contacta a support@cside.dev para habilitarlo en tu equipo.
El builder genera la cabecera. Nunca la envia por ti y nunca bloquea nada en tu sitio. Tu copias la cabecera en la configuracion de tu propio servidor, CDN o framework, y es tu servidor el que la aplica.
Elegir un dominio
Al abrir CSP Builder desde el nivel de equipo veras tus dominios con una columna Script data. Los dominios marcados como Needs setup aun no tienen datos de scripts, y siguen siendo seleccionables: esa pagina te muestra como instalar el script de monitorizacion. Selecciona cualquier fila para abrir el builder de ese dominio.
Dentro del builder, el desplegable de dominios en la parte superior cambia de dominio sin salir de la pagina.
La politica sugerida
El bloque en la parte superior de la pagina es la respuesta que buscabas: la cabecera completa, reconstruida en vivo a medida que haces cambios. Contiene dos lineas, y necesitas ambas:
Content-Security-Policy(oContent-Security-Policy-Report-Only), tu politicaReporting-Endpoints, que es lo que hace que las violaciones lleguen a tu panel
Copialas con el boton junto al bloque. Copiar solo la primera linea te da una politica que funciona pero que no informa nada a cside.
La direccion de reporte se construye para el dominio concreto en el que estas, y cambia segun si cside hace de proxy de ese dominio. Copiala siempre desde la pagina en vez de montarla tu, o los reportes se descartaran en lugar de archivarse mal.
Las politicas largas se recortan a las primeras lineas bajo un degradado. Selecciona Show para leerla entera. Copiar y cambiar de modo funcionan aunque este recortada.
Primero report-only, despues enforce
El selector Report-only / Enforce encima del bloque elige que nombre de cabecera copias. El cuerpo de la politica es identico en ambos.
Despliega primero la cabecera report-only. Los navegadores informaran de lo que la politica habria bloqueado sin bloquear nada, y esos reportes llegan a CSP Violations para que veas lo que se te paso. Cuando esa vista este limpia, vuelve, cambia a Enforce y despliega la cabecera que si aplica.
La comprobacion “Before you enforce”
Copiar la cabecera de aplicacion abre un dialogo Before you enforce. Te recuerda que aplicar la politica bloquea toda peticion que no este en la lista y te pide comprobar tres cosas antes:
- Scripts y estilos inline. Ninguna lista de hosts los permite. Si tus paginas usan bloques
<script>, manejadoresonclicko atributosstyle, activa las opciones inline de esas directivas. - URL
data:yblob:. Habituales en iconos, fuentes e imagenes inline. Anadelas aimg-src,font-srcomedia-srcsi las usas. - Tus flujos de pago e inicio de sesion. La politica cubre las paginas que los visitantes cargaron en los ultimos 30 dias. Recorre primero tus pasos de pago e inicio de sesion para que los proveedores que cargan esten en la lista.
Selecciona Copy enforcing header para continuar, o Cancel para volver.
El interruptor default-src
Encima de las pestanas de directivas, un interruptor default-src ‘self’ para toda la politica anade un suelo default-src 'self' a la cabecera. Restringe a tu propio origen todo tipo de peticion que la politica no liste, en lugar de dejar esos tipos sin restriccion. Esta desactivado hasta que lo actives, y cside recomienda activarlo.
El suelo solo gobierna las directivas de fetch que la politica omite. Nunca alcanza a frame-ancestors, form-action, base-uri, sandbox ni a las directivas de reporte, asi que sigues teniendo que definirlas tu.
Revisar directivas
cside rellena siete directivas a partir de lo que observa: script-src, connect-src, img-src, style-src, frame-src, font-src y media-src. Cada una tiene su pestana y las revisas de una en una. El recuento bajo la politica siempre cuenta la cabecera completa, no solo la pestana en la que estas.
Cada pestana lleva una marca:
| Marca | Que significa |
|---|---|
| Un punto | Sin revisar. Nadie ha mirado los hosts de esta directiva. Se reconstruye con el trafico actual cada vez que la abres, con cada host en el valor por defecto de su clasificacion, y nada de lo que desactives se conserva hasta que guardes |
| Un check | Revisada y guardada. Tu decision sobre cada host que viste se conserva. Los hosts observados despues vuelven propuestos como activados, ver mas abajo |
| Atenuada, “no data” | cside no ha visto trafico de este tipo en este dominio, asi que no hay nada que revisar |
Revisar una directiva registra tus decisiones. Ese es el objetivo de recorrer las pestanas: hasta que alguien guarda una directiva, nadie ha confirmado que sus hosts pertenecen a tu politica, y los interruptores que cambies se pierden al salir. Basta con abrir la pestana y guardar. No hace falta cambiar nada. El aviso bajo la lista de hosts cuenta las directivas que siguen sin revisar, porque aplicar una politica que nadie reviso bloquea todo lo que esas directivas pasaron por alto.
Selecciona Save cuando termines con una pestana. Guardar no te mueve de sitio y mantiene tu filtro.
Hosts que aparecen despues de guardar
Guardar no fija una directiva a los hosts que viste. Solo registra tu respuesta para esos hosts. Un host observado por primera vez despues de guardar nunca fue una decision tuya, asi que el builder lo trata igual en una directiva revisada y en una sin revisar: vuelve activado, con el valor por defecto de su clasificacion (activado para todo salvo Blocked by you y Flagged malicious), y se incluye en la cabecera que se muestra en la parte superior de la pagina. La proxima vez que copies esa cabecera, el host nuevo estara en ella, guarde alguien de nuevo o no.
Eso es una propuesta, no un cambio en tu politica en produccion: nada llega a tu sitio hasta que despliegas la cabecera copiada. Activar por defecto los hosts nuevos significa que un proveedor que empezo a funcionar despues de guardar no desaparece en silencio de tu siguiente copia. Cuando vuelvas al builder, comprueba los hosts que no reconozcas, desactivalos y guarda otra vez para que la decision se conserve.
Limites al guardar
Una directiva puede contener hasta 5.000 fuentes, y la politica guardada completa hasta 512 KB de fuentes. Guardar por encima de cualquiera de los dos limites falla con un error que indica el limite. Si los alcanzas, usa familias con comodin (mas abajo) en lugar de listar cada subdominio, o desactiva los hosts que no necesites.
Grupos de hosts
Dentro de una directiva, los hosts se agrupan segun como los clasifica cside, y cada grupo tiene un interruptor masivo en su cabecera salvo donde se indica.
| Grupo | Que significa | Activo por defecto |
|---|---|---|
| First party | Tu propio dominio | Si |
| Known vendors | Un proveedor que cside reconoce como una marca grande y reputada | Si |
| Approved by you | Un hostname que tu equipo aprobo en Resources Inventory | Si |
| Unvetted | Todo lo que cside no pudo atribuir. Este es el grupo para el que existe la revision | Si |
| Blocked by you | Tu equipo bloqueo este host | No |
| Flagged malicious | cside bloqueo este host para todos los clientes | No |
Unvetted, Blocked by you y Flagged malicious no tienen interruptor masivo. La mayoria de los hosts de la mayoria de dominios caen en Unvetted, asi que un solo interruptor reescribiria casi toda tu politica sin que nadie la mirara, y volver a activar un host bloqueado o malicioso deberia ser una decision que tomas host por host con la advertencia delante.
Contraer un grupo solo oculta sus filas. Los hosts conservan el estado en el que los dejaste, siguen contando en el recuento y siguen entrando en la politica guardada. Buscar expande todos los grupos, asi que un host que busques nunca queda oculto tras una cabecera contraida.
Los recuentos de alertas junto a un host son informativos. Una alerta nunca cambia si un host esta activado.
*.csidetm.com y *.csidefd.com estan siempre en la politica y no se pueden desactivar. Una politica que bloqueara el propio script de cside detendria la monitorizacion a partir de la cual se construyo.
Familias de proveedores con comodin
Cuando un proveedor sirve desde muchos subdominios, como a.vendor.com, b.vendor.com y cdn.vendor.com, el builder los agrupa en una sola fila *.vendor.com. La fila de la familia tiene un unico interruptor y cuenta como una sola entrada en la politica. Expande la fila para ver las direcciones que cubre.
Si desactivas el comodin, puedes elegir una a una las direcciones exactas que necesitas, y cada una cuenta entonces como su propia entrada. Una familia cuyas direcciones ya estan cubiertas por un comodin mas amplio que tienes activado no tiene interruptor propio; desactiva ese comodin mas amplio para gestionar las direcciones por separado.
Una familia Mixed tiene solo algunas direcciones permitidas individualmente. Las direcciones nuevas quedan desactivadas por defecto. Una familia Covered hereda un comodín aprobado más amplio y no tiene interruptor propio. Si cside bloquea una dirección dentro de una familia permitida, la fila muestra una advertencia: el comodín sigue permitiéndola en la CSP generada.
Policy options
Encima de la lista de hosts, Policy options activa las palabras clave de origen que puede llevar una directiva. Cuales aparecen depende de la directiva que estes editando:
| Palabra clave | Que hace |
|---|---|
'self' | Permite recursos servidos desde tu propio origen. Activa por defecto y disponible en todas las directivas |
'unsafe-inline' | Permite bloques inline. Se ofrece en script-src y style-src, desactivada por defecto en ambas. En style-src permite atributos style y bloques <style>; en script-src permite bloques <script> y manejadores tipo onclick. Cada interruptor indica la consecuencia: en script-src, cualquier script inline de tus paginas se ejecutara, incluido uno inyectado en la pagina |
'report-sample' | Incluye un fragmento del codigo bloqueado en cada reporte de violacion. Se ofrece en script-src y style-src, donde ayuda a identificar que se bloqueo |
Anadir un host que cside no ha visto
Selecciona Add a host en la barra de herramientas sobre la lista para anadir un hostname a mano. Usalo para un host que sabes que tu sitio necesita pero que aun no ha aparecido en el trafico, como un proveedor que estas a punto de lanzar o algo que solo carga en una pagina que cside no monitoriza.
Las entradas se validan contra la directiva que estas editando. Los hostnames se aceptan en cualquier directiva, con un comodin *. inicial si lo necesitas. data: y blob: solo se aceptan en img-src, font-src y media-src. Los puertos, rutas, esquemas y palabras clave entrecomilladas se rechazan.
Si ya envias una CSP
Cuando cside ha observado una cabecera Content-Security-Policy en el dominio, aparece un aviso sobre la politica que muestra la que se vio con mas frecuencia en los ultimos 30 dias.
Fusiona nuestra politica con la tuya en vez de sustituir tu cabecera. El builder solo rellena directivas que puede respaldar con trafico observado, asi que una politica generada aqui no dice nada sobre frame-ancestors, form-action, base-uri u object-src. Cambiar toda tu cabecera por esta elimina cada directiva que ya aplicabas y para la que no hacemos ninguna sugerencia.
La politica del aviso es lo que cside observo, no tu configuracion de servidor. Los nonces y las cadenas de consulta se normalizan a comodines, y puede diferir de la cabecera real de cualquier pagina concreta, asi que comparala con tu configuracion en vez de copiarla.
Antes de desplegar
- Despliega primero la cabecera report-only y observa CSP Violations antes de aplicarla
- Recorre todas las pestanas de directivas. El aviso bajo la lista de hosts te dice cuantas siguen sin revisar y te recuerda que aplicar la politica bloquearia todo lo que pasaron por alto
- Vuelve despues de desplegar. Los hosts observados despues de guardar vuelven activados y entran en la siguiente cabecera que copies, asi que revisalos y guarda otra vez
- Copia las dos lineas, la politica y
Reporting-Endpoints - Fusionala con tu cabecera existente en vez de sustituirla
Paginas relacionadas
- Ajustar tu CSP: reportes de violaciones CSP, limites de retencion y exportacion de reportes
- Anadir cside a tu CSP: que cambiar en una politica que ya mantienes para que el script de cside siga funcionando
- Inventario de recursos: revisa y aprueba hostnames. Los hostnames aprobados llegan aqui en el grupo Approved by you
Thanks for your feedback!