Saltar al contenido

¿Cómo funciona Content-Security-Policy con X-Frame-Options?

Después de de esta extensa recopilación de datos pudimos solucionar este asunto que suelen tener muchos de nuestros usuarios. Te compartimos la solución y deseamos resultarte de gran apoyo.

Solución:

los frame-src Directiva CSP (que está obsoleta y reemplazada por child-src) determina qué fuentes se pueden usar en un marco en una página.

los X-Frame-Options el encabezado de respuesta, por otro lado, determina qué otras páginas pueden usar esa página en un iframe.

En tu caso, http://a.com con X-Frame-Options: DENY indica que ninguna otra página puede usarlo en un marco. no importa que http://b.com tiene en su CSP; ninguna página puede usar http://a.com en un marco


El lugar donde X-Frame-Options se cruza con CSP es a través de la frame-ancestors directiva. De la especificación CSP (énfasis mío):

Esta directiva es similar a la X-Frame-Options cabecera que han implementado varios agentes de usuario. los 'none' expresión de origen es más o menos equivalente a la de ese encabezado DENY, 'self' a SAMEORIGIN, y así. La principal diferencia es que muchos agentes de usuario implementan
SAMEORIGIN de modo que solo coincida con la ubicación del documento de nivel superior. Esta directiva comprueba cada antepasado. Si algún ancestro no coincide, la carga se cancela. [RFC7034]

los frame-ancestors directiva deja obsoleta la X-Frame-Options encabezamiento. Si un recurso tiene ambas políticas, el frame-ancestors la política DEBE ser aplicada y el X-Frame-Options la política DEBE ser ignorada.

Una pregunta anterior indicaba que esto no funcionaba en Firefox en ese momento, pero es de esperar que las cosas hayan cambiado ahora.


ACTUALIZACIÓN Abril 2018:

Política de seguridad de contenido: la directiva ‘child-src’ ha quedado obsoleta. Utilice la directiva ‘worker-src’ para controlar los trabajadores o la directiva ‘frame-src’ para controlar los marcos, respectivamente.

Parece child-src ahora es el obsoleto y frame-src está de vuelta.

Ninguna de sus hipótesis es universal true.

  • Chrome ignora X-Frame-Options.
  • Safari 9 y versiones anteriores ignoran CSP frame-ancestors.
  • Safari 10-12 respeta el CSP frame-ancestors directiva, pero priorizarX-Frame-Options si se especifican ambos.

La respuesta se encontró probando en la práctica.
Creé dos sitios web y reproduje la situación descrita.

Parece que X-Frame-Options es principal.
Si el servidor de destino niega el encuadre, el sitio web del cliente no puede mostrar esta página en iframe cualesquiera que sean los valores de Content-Security-Policy se establecen.

Sin embargo, no he encontrado ninguna confirmación en la documentación.

Probado en Chrome 54 e IE 11.

Si estás de acuerdo, tienes la libertad de dejar un ensayo acerca de qué le añadirías a este ensayo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *