Hombre en pc
Hombre en pc

Entendiendo el Header Content Security Policy (CSP)

Hola, bienvenido a otra mini publicación. Se trata de CSP. Comencemos definiendo la política de seguridad de contenido de CSP. Esta es una capa de seguridad basada en la mitigación de ataques XSS e inyección de datos. starred: true

Para activar CSP debes realizar una configuración en tu servidor para agregar este encabezado Content-Security-Policy en algunas versiones anteriores este encabezado era X-Content-Security-Policy X-WebKit-CSP

o alternativamente, puedes establecer una metaetiqueta que lo defina así, pero no se recomienda:

<meta
  http-equiv="Content-Security-Policy"
  content=""
/>

¿Qué podemos delimitar con una CSP?

Podemos establecer políticas basadas en estas directivas:

Los valores que podemos establecer para estas directivas son básicamente los siguientes:

Por ejemplo, si queremos establecer una política predeterminada para aceptar recursos desde la URL propia y datos base64 solo desde mysite.com, podemos configurar la política de esta manera:

Content-Security-Policy: "default-src 'self' data: https://mysite.com"

En el caso de las directivas script-src y style-src, tenemos valores adicionales para configurar como los siguientes:

<script>
  alert(‘Hola ;)' )
</script>

o en el caso de estilos:

<style>
  h1 {
    color: red;
  }
</style>

Y en el caso de los scripts, podemos limitar la ejecución de eval:

Con la directiva Eval.

Complementemos el último ejemplo de la política permitiendo CSS y JS en línea, y permitiendo eval en JS. El resultado es:

Content-Security-Policy: "default-src 'self' data: https://giorgiosaud.com; script-src 'unsafe-inline' 'unsafe-eval'; style-src 'unsafe-inline'"

Podemos establecer directivas especiales para cualquiera de ellas, superponiendo las de default-src o configurar solo las directivas deseadas que necesitemos, y eso es todo.

Esperando que ahora sepas un poco más sobre CSP, nos vemos en otro post, y aquí tienes otro post interesante sobre CORS y solicitudes Preflight.

¡Espero que te sea útil! Avísame si necesitas más ayuda.

¡Link copiado!

Comments for 000001