Zum Inhalt springen

Más seguridad para los sitios web con cabeceras de seguridad

El proyecto OWASP Secure Headers define una serie de cabeceras HTTP que pueden utilizarse para mejorar la seguridad de los sitios web.
El uso de estas cabeceras evita que se exploten las vulnerabilidades de seguridad de los navegadores modernos. Esta guía describe cómo se pueden implementar fácilmente las cabeceras de seguridad en TYPO3.

Integración mediante TypoScript

Las cabeceras de seguridad se envían como cabeceras HTTP adicionales cuando se establece la conexión entre el navegador y el servidor. En TYPO3, las cabeceras adicionales pueden añadirse mediante TypoScript.

A partir de la versión 7.6 de TYPO3, la especificación se realiza a través de un array numérico de la siguiente forma:





config.additionalHeaders { 10.header = Parameter1:Value; posiblemente valores adicionales 20.header = Parameter2:Value; posiblemente valores adicionales ... }En

TYPO3 versión 6.2 y anteriores, las cabeceras individuales están separadas por un símbolo de tubería |. Por lo tanto, la configuración anterior sería





config.additionalHeaders ( Parameter1:Value;possibly additional values | Parameter2:Value;possibly additional values | ... )

Al final de esta página hay un ejemplo completo que se puede utilizar como plantilla para sus propios proyectos TYPO3.

Seguridad estricta de transporte HTTP (HSTS)

Con la línea HTTP Strict Transport Security, cuando se llama a un dominio por primera vez se informa al navegador de que todas las llamadas futuras sólo deben realizarse a través de una conexión cifrada (https). Esta especificación también puede extenderse a todos los subdominios.

El navegador recuerda esta configuración para todos los accesos futuros dentro del periodo especificado y rechaza el acceso a través de conexiones no cifradas (http://).

Un requisito previo para utilizar HSTS es que exista un certificado SSL válido para el dominio. Si la especificación se extiende a subdominios, debe comprobarse si existe un certificado SSL comodín para el dominio o, alternativamente, si todos los subdominios utilizados también disponen de un certificado SSL.

Sintaxis de la cabecera HTTP Strict Transport Security para un solo dominio:

strict-transport-security:max-age=31536000El

parámetro max-age especifica cuánto tiempo debe ser válida esta regla (en segundos); se recomienda un valor de un año (31536000 segundos).

Si todos los subdominios deben incluirse también en la regla, la cabecera debe decir

strict-transport-security:max-age=31536000; includeSubdomains

X-Frame-Options

La cabecera X-Frame-Options puede utilizarse para especificar si su propio sitio web puede integrarse en marcos. Si impide que una página se cargue a través de un marco en el navegador, puede prevenir ataques mediante el llamado clickjacking.

Los parámetros posibles son:

DENEGAR: incrustar la página en un marco generalmente no es posible

SAMEORIGIN: la incrustación sólo está permitida desde su propio dominio.

ALLOW-FROM example.com: puede especificar explícitamente los sitios web que pueden integrarse mediante frame

Se recomienda el uso de SAMEORIGIN para sitios web TYPO3:

X-Frame-Options:SAMEORIGIN

Protección X-Xss

Los navegadores actuales incorporan protección contra ataques XSS reflexivos. Esta protección puede activarse y desactivarse con la cabecera X-Xss-Protection. Con el parámetro opcional mode=block, el ataque se bloquea en lugar de sólo filtrarse. Configuración recomendada:

X-Xss-Protection: 1; mode=block

Política de remisión

El encabezado Referrer-Policy se puede utilizar para configurar si se transfiere el referente para los enlaces salientes del sitio web y cómo se hace. Este encabezado es relativamente nuevo y se admite desde principios de 2017.

Están disponibles las siguientes opciones de configuración:

no-referrer: no se proporciona ningún referrer.

no-referrer-when-downgrade: no se pasa ningún referrer al cambiar de una página https a una http (cifrada a no cifrada). El referrer se genera para enlaces desde páginas no encriptadas (http).

same-origin: el referrer se genera para enlaces dentro de una página web, pero no para enlaces a páginas web externas.

origen: el referente se genera siempre y especifica el dominio de origen, pero se elimina la ruta.

strict-origin: como origin, pero sólo se especifica el dominio de origen si el destino es un sitio web con cifrado (https).

origin-when-cross-origin: dentro del mismo dominio, la ruta también aparece en el referrer, cuando se enlaza a otros dominios sólo el nombre del dominio sin la ruta.

strict-origin-when-cross-origin: como antes, pero no se envía información de referencia cuando se pasa de una conexión encriptada a una no encriptada.

unsafe-url: el referrer se envía en cualquier caso, incluso cuando se enlaza desde una conexión encriptada a una no encriptada. Esta opción no es recomendable (de ahí el nombre "unsafe")

Recomendación:

Si se ha emitido un certificado SSL para el dominio, se recomienda la opción strict-origin; en caso contrario, la opción origin.

Política de referencia:origen estricto

Política de seguridad de contenidos

Con la política de seguridad de contenido, puede especificar exactamente qué contenido puede ser cargado desde dónde por el navegador en el sitio web. Lamentablemente, no es posible recomendar aquí una entrada estándar, ya que los detalles dependen individualmente del contenido del sitio web.

Encontrará información detallada al respecto en el sitio web de sitio web de Scott Helme.

Se recomienda encarecidamente probar primero la política con la instrucción "Content-Security-Policy-Report-Only" antes de ponerla en marcha. La salida durante las pruebas se muestra en la consola del navegador Chrome, por ejemplo.

A continuación se muestra un ejemplo del aspecto de la configuración en el sitio web jweiland.net:

Content-Security-Policy: default-src 'unsafe-inline' 'unsafe-eval'; 
script-src 'unsafe-inline' 'unsafe-eval' https://jweiland.net https://stat.jweiland.net https://www.googletagmanager.com https://www.google-analytics.com; font-src 'self'; 
style-src 'unsafe-inline' https://jweiland.net/; 
img-src 'self' https://www.google-analytics.com/ https://stats.g.doubleclick.net/ https://stat.jweiland.net; 
frame-src https://player.vimeo.com/;
connect-src https://jweiland.net/

Ejemplo de configuración de TypoScript

El siguiente ejemplo para TYPO3 versión 7 (y superiores) puede servir de base:




config.additionalHeaders { 10.header = strict-transport-security:max-age=31536000 20.header = X-Frame-Options:SAMEORIGIN 30.header = X-Xss-Protection: 1; mode=block 40.header = X-Content-Type-Options: nosniff 50.header = Política de referencia: origen estricto }Para

TYPO3 versión 6.2 (e inferiores) aquí está la configuración de ejemplo:




config.additionalHeaders ( strict-transport-security:max-age=31536000 | X-Frame-Options:SAMEORIGIN | X-Xss-Protection: 1; mode=block |

X-Content-Type-Options: nosniff | Referrer-Policy:strict-origin )

Probar la configuración de las cabeceras de seguridad

Una vez realizada la configuración en TYPO3, se puede comprobar la configuración real con una herramienta:https://securityheaders.io

Para más información

Si desea obtener más información sobre las cabeceras de seguridad, visite los siguientes sitios web:

Sitio web de Scott Helme
Cabeceras de seguridad del proyecto OWASP

Aktualisiert: 17.07.2024