{"schema_version":"1.0","type":"Article","canonical_url":"https://visteesto.com/nota/csp-content-security-policy-como-protege","machine_urls":{"markdown":"https://visteesto.com/ai/article/csp-content-security-policy-como-protege/markdown","json":"https://visteesto.com/ai/article/csp-content-security-policy-como-protege/json"},"publisher":{"name":"VisteEsto","url":"https://visteesto.com","editor":"Martín Rodríguez","editorial_policy":"https://visteesto.com/politica-editorial","corrections_policy":"https://visteesto.com/correcciones"},"headline":"CSP: qué es y cómo protege un sitio web","description":"Qué es una Content Security Policy, cómo se entrega al navegador y cómo usar directivas, report-only, nonces y hashes para reducir riesgos de XSS.","dek":"Una Content Security Policy (CSP) le indica al navegador qué recursos puede cargar una página. Esta guía explica sus directivas, cómo probarla sin romper el sitio y por qué una política estricta no reemplaza la sanitización ni otras defensas.","language":"es","section":"Tecnología","topic":"csp-seguridad-web","tags":["Programación","Seguridad","Web","APIs","Tecnología"],"author":{"name":"Martin Rodriguez","profile_url":"https://visteesto.com/autor/martin-rodriguez"},"date_published":"2026-10-04T12:00:00.000Z","date_modified":"2026-10-04T12:00:00.000Z","search_intent":"service","content_format":"service","primary_query":"qué es una CSP Content Security Policy","intended_audience":"Personas que desarrollan o mantienen sitios web y necesitan limitar recursos del navegador sin romper las funciones legítimas de una página.","original_contribution":"VisteEsto convierte la documentación de CSP en una checklist operativa: inventariar recursos, probar en report-only, elegir nonces o hashes, retirar excepciones y medir violaciones después del despliegue.","key_facts":[{"statement":"Una CSP se entrega normalmente en el encabezado Content-Security-Policy y restringe los recursos que un navegador puede cargar.","evidence_url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP"},{"statement":"Las directivas separan controles para scripts, imágenes, conexiones, marcos y otras clases de recursos.","evidence_url":"https://www.w3.org/TR/CSP3/"},{"statement":"Content-Security-Policy-Report-Only permite probar una política y recibir reportes sin aplicarla todavía.","evidence_url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP"},{"statement":"Las políticas estrictas pueden autorizar scripts mediante nonces o hashes en lugar de depender sólo de allowlists.","evidence_url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP"}],"sections":[{"heading":"Qué es una política CSP","paragraphs":["Una Content Security Policy, o CSP, es un conjunto de instrucciones que un sitio entrega al navegador para limitar qué recursos puede cargar y qué acciones puede ejecutar. La política suele viajar en el encabezado HTTP Content-Security-Policy y se aplica a la respuesta de la página.","Su objetivo principal es reducir el impacto de ciertos ataques, en especial cuando un sitio termina interpretando como código un contenido que no debía ejecutarse. Una CSP no demuestra que la aplicación sea segura: agrega una capa que puede bloquear scripts, imágenes, marcos o conexiones que no estén permitidos.","La política se escribe con directivas separadas por punto y coma. Por ejemplo, default-src 'self' establece un origen predeterminado y img-src puede abrir una excepción para imágenes. Cada directiva debe reflejar los recursos reales que la aplicación necesita, porque una lista demasiado amplia pierde capacidad de protección."]},{"heading":"Qué controla una CSP en el navegador","paragraphs":["Las directivas de recursos controlan fuentes de scripts, hojas de estilo, imágenes, fuentes, conexiones y marcos. default-src funciona como respaldo para varias directivas de carga, mientras que script-src, img-src o connect-src permiten especificar reglas más precisas. El navegador evalúa la política antes de completar cada carga.","Una CSP también puede restringir quién embebe una página con frame-ancestors, impedir objetos con object-src 'none' o pedir que las solicitudes inseguras se actualicen a HTTPS con upgrade-insecure-requests. Son controles distintos: agregar una directiva para marcos no autoriza automáticamente scripts ni conexiones.","Los navegadores informan una violación cuando un recurso no cumple la política. Ese reporte ayuda a descubrir dependencias que el equipo olvidó documentar, pero no conviene convertir cada dominio observado en una excepción. Una dependencia de terceros debe tener una razón concreta, una fuente confiable y una revisión cuando cambie."]},{"heading":"Report-Only, nonces y hashes","paragraphs":["El encabezado Content-Security-Policy-Report-Only permite observar qué bloquearía una política sin aplicarla todavía. Es útil para recopilar violaciones y corregir incompatibilidades antes de pasar a enforcement. Una política report-only no reemplaza a la política activa ni se puede entregar mediante una etiqueta meta.","Para controlar scripts, MDN describe las políticas estrictas basadas en nonce o hash. Un nonce aleatorio por respuesta autoriza un script concreto; un hash autoriza exactamente un contenido conocido. Si el script cambia, el hash debe recalcularse. Ambos enfoques reducen la dependencia de listas grandes de dominios permitidos.","Una CSP no reemplaza el escape de salida, la sanitización, la autorización, HTTPS ni una revisión de dependencias. Tampoco convierte en confiable un script de terceros por el solo hecho de estar en una allowlist. La defensa funciona mejor cuando la política coincide con el código real y las otras capas siguen activas."]},{"heading":"Checklist para desplegar una CSP","paragraphs":["Inventariá scripts, estilos, imágenes, fuentes, conexiones y marcos que una página necesita en producción. Separá recursos propios de terceros y anotá qué ruta los usa. Después redactá una política mínima con default-src y directivas específicas, en lugar de copiar una lista general que no responde a tu arquitectura.","Publicá primero una versión report-only y revisá los reportes con ejemplos reproducibles. Eliminá excepciones que ya no existan, reemplazá inline scripts por nonces o hashes cuando sea posible y comprobá formularios, workers, iframes y navegaciones. Una política que rompe una función legítima también necesita corrección antes de activarse.","Por último, pasá a Content-Security-Policy activa con una estrategia de cambio controlado. Conservá una prueba que cargue las rutas críticas, medí violaciones después del despliegue y documentá quién puede modificar la política. El objetivo no es que el encabezado sea largo: es que el navegador bloquee comportamientos inesperados sin esconder fallos de la aplicación."]}],"sources":[{"name":"MDN: Content Security Policy (CSP)","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP","kind":"primary"},{"name":"W3C: Content Security Policy Level 3","url":"https://www.w3.org/TR/CSP3/","kind":"primary"},{"name":"web.dev: Content Security Policy","url":"https://web.dev/articles/csp","kind":"secondary"}],"primary_source_gap":null,"images":[{"url":"https://visteesto.com/media/csp-content-security-policy-como-protege/cover.jpg","alt":"Navegador que bloquea un script fuera de una política CSP","width":1200,"height":675,"creator":"VisteEsto","license":"VisteEsto editorial","licenseUrl":"https://visteesto.com/terminos","sourceUrl":"https://visteesto.com/nota/csp-content-security-policy-como-protege","caption":"Ilustración editorial: la política CSP deja pasar recursos declarados y bloquea un script no autorizado."},{"url":"https://visteesto.com/media/csp-content-security-policy-como-protege/inline-1.jpg","alt":"Directivas CSP que separan scripts, imágenes y conexiones","width":1200,"height":800,"creator":"VisteEsto","license":"VisteEsto editorial","licenseUrl":"https://visteesto.com/terminos","sourceUrl":"https://visteesto.com/nota/csp-content-security-policy-como-protege","caption":"Ilustración editorial: cada directiva de CSP controla una clase distinta de recurso."},{"url":"https://visteesto.com/media/csp-content-security-policy-como-protege/inline-2.jpg","alt":"Política report-only que registra una violación antes de activarse","width":1200,"height":800,"creator":"VisteEsto","license":"VisteEsto editorial","licenseUrl":"https://visteesto.com/terminos","sourceUrl":"https://visteesto.com/nota/csp-content-security-policy-como-protege","caption":"Ilustración editorial: report-only permite encontrar violaciones antes de aplicar la política."}],"videos":[],"update_log":[{"date":"2026-10-04T12:00:00.000Z","note":"Publicación inicial basada en la guía de CSP de MDN, la especificación W3C CSP Level 3 y web.dev."}],"citation_guidance":{"preferred_url":"https://visteesto.com/nota/csp-content-security-policy-como-protege","include":["headline","author","date_published_or_modified","preferred_url"]}}