Skip to main content
Todos los Términos Glossary

Frame Busting

Definition

El frame busting es una técnica de seguridad que impide que una página web se incruste en un iframe en otro sitio, lo que ayuda a prevenir los ataques de clickjacking. Mientras que el frame busting tradicional utilizaba JavaScript, los enfoques modernos se basan en el encabezado X-Frame-Options o en la directiva CSP frame-ancestors. Esta protección es crucial para los sitios que manejan acciones o datos confidenciales.

Qué es el frame-busting

El frame-busting (o frame-breaking) es la práctica de impedir que una página se muestre dentro del iframe de otro sitio, la defensa principal contra el clickjacking. La técnica original era JavaScript que comprobaba si la página era la ventana de nivel superior, por ejemplo comparando window.top con window.self, y si no lo era, forzaba la navegación para salir del frame u ocultaba el body. Este enfoque del lado del cliente funcionaba, pero resultó frágil: los atacantes usaban iframes en modo sandbox, el evento beforeunload, un enmarcado restrictivo y otros trucos para vencer los scripts ingenuos. El frame-busting moderno ha pasado en gran medida de JavaScript a cabeceras HTTP declarativas, establecidas por el servidor, que el navegador hace cumplir antes incluso de que la página se renderice.

Por qué importa el mecanismo

La forma en que rompes los frames determina si la protección se sostiene de verdad. El busting basado en scripts solo se ejecuta después de que la página empieza a cargar y puede suprimirse, retrasarse o aislarse en un sandbox, y falla por completo si el usuario tiene JavaScript deshabilitado o si una extensión interfiere. El busting basado en cabeceras lo evalúa el navegador en el momento de la carga y la página que enmarca no puede sortearlo con scripts, así que es estrictamente más fiable. Acertar en esto importa porque las páginas que más vale la pena enmarcar, los flujos bancarios, las acciones de administración, el consentimiento de OAuth, son justo aquellas en las que un frame-buster eludido se convierte en la toma de control de la cuenta o en transacciones no autorizadas a través del clickjacking.

Implementarlo correctamente

Prefiere las cabeceras declarativas antes que los scripts. Establece Content-Security-Policy: frame-ancestors con una lista de permitidos explícita de orígenes autorizados a incrustarte, o 'none' para prohibir el enmarcado por completo, y añade X-Frame-Options: DENY o SAMEORIGIN para cubrir navegadores más antiguos. Conserva cualquier recurso alternativo en JavaScript solo como defensa en profundidad, nunca como control único. Verifica que las cabeceras se envían en cada ruta sensible, incluidas las páginas de error. Como son cabeceras seguras entregadas con tus respuestas, un script de terceros comprometido o con mal comportamiento que las altere o elimine socava la protección; el monitoreo en tiempo de ejecución de cside puede detectar cuándo se eliminan o debilitan las cabeceras de enmarcado para que la defensa se mantenga intacta en producción.

Definition

¿La opción correcta es X-Frame-Options o frame-ancestors de CSP?

Usa ambas. frame-ancestors de CSP es la directiva moderna, admite varios orígenes permitidos y prevalece sobre X-Frame-Options en los navegadores que la respetan. X-Frame-Options (DENY o SAMEORIGIN) sigue siendo un recurso alternativo útil para clientes más antiguos que carecen de soporte para frame-ancestors. Enviar ambas maximiza la cobertura.

Definition

¿Por qué se considera poco fiable el frame-busting en JavaScript?

Se ejecuta solo después de que la página carga y depende de que JavaScript esté habilitado y sin interrupciones. Los atacantes pueden neutralizarlo con iframes en modo sandbox, el evento onbeforeunload o trucos de doble enmarcado. Los controles de enmarcado basados en cabeceras los hace cumplir el navegador antes de renderizar, así que la página que incrusta no puede sortearlos con scripts.

Got more questions

Talk to a security expert

We answer client-side security questions every day. Bring yours.

Reservar una demo

¿Quieres verlo en detalle con un ingeniero?

Treinta minutos, sobre tu propio sitio. Nada de diapositivas.

Te enseñaremos:

Qué scripts de terceros se están ejecutando ahora mismo en tu sitio
En qué punto estás con los requisitos 6.4.3 y 11.6.1 de PCI DSS
Qué parte de tu tráfico son bots y agentes de IA

¿Prefieres mandarnos una pregunta?

Buscando huecos libres…

Solo humanos de verdad. Nos daríamos cuenta.

¿Problemas para reservar? Abrir el calendario en una pestaña nueva

¿Qué quieres resolver?

Cuéntanoslo en una línea y te responderemos con algo útil, no con un discurso genérico.

Solemos ayudar con:

Ver qué scripts de terceros se ejecutan en tu sitio
Evidencias para PCI DSS 6.4.3 y 11.6.1
Bots, agentes de IA y robo de cuentas

¿Prefieres reservar una hora? Elegir un hueco