¿Qué es el Clickjacking?
El clickjacking es cuando un atacante disfraza un elemento de una página web o lo hace invisible sobre una página existente, con el objetivo de redirigirte o hacer que hagas clic en otra cosa. Cuando haces clic o eres engañado para hacer clic en otro elemento, puedes visitar accidentalmente sitios web maliciosos, entregar tus credenciales o filtrar información sensible. Incluso podrías comprar productos en línea desde un sitio falso y fraudulento.
Los ataques de clickjacking suelen realizarse mostrando una página o elemento HTML invisible, normalmente dentro de un iframe, sobre una página existente que ya ves como usuario. Esto te hace creer que estás haciendo clic en la página visible real, pero en realidad estás haciendo clic en un botón o elemento invisible que está vinculado a una página adicional que ha sido superpuesta.
Si esto suena un poco confuso, ten paciencia. En esta guía, desglosaremos qué son los ataques de clickjacking y cómo funcionan. Sabrás cómo prevenir el clickjacking y qué puedes hacer para combatir estos casos.
.jpg)
¿Por qué importa la prevención del clickjacking en 2026?
El clickjacking importa porque convierte una interacción inofensiva en algo peligroso que podría tener consecuencias devastadoras. Ni siquiera eres consciente de la superposición que se ha colocado en tu página. Es invisible al ojo humano y puede modificar la interfaz de tu página para desviar tus acciones de usuario. Si accedes a un sitio malicioso con cuentas sociales ya autenticadas, el atacante puede robar tus credenciales sensibles y otros datos.
El clickjacking también importa porque un solo clic o un clic oculto puede cambiar la configuración de tu cuenta, hacer que te suscribas forzosamente a otros contenidos y sigas páginas sin tu consentimiento. Imagina que un atacante obtiene tus credenciales de usuario haciéndote clic en una página mediante clickjacking. Luego puede tomar el control de tu cuenta y hacer que realices actividades maliciosas sin que sepas nada de lo que ocurre en segundo plano.
El clickjacking erosionará colectivamente la confianza de tus clientes en tu organización, aumentará tus gastos de soporte y dificultará la prevención de estos ataques. Cuanto más fragmentados y extendidos estén en diferentes servicios, peor será. Y lo peor es que los usuarios no pueden distinguir entre las superposiciones legítimas de tu sitio web y estas superposiciones engañosas porque permanecen ocultas.
¿Cómo funcionan los ataques de clickjacking?
Un ejemplo común de ataque de clickjacking son los botones invisibles de “comprar” y “me gusta” en los que haces clic pensando que estás cerrando una ventana emergente. Otro escenario clásico es colocar un botón oculto de “habilitar” o “activar” en la parte inferior de una interfaz de videojuego que estás usando.
Ten en cuenta que el clickjacking no es phishing. El phishing se basa en convencerte o persuadirte para que tomes una acción. Pero en un ataque de clickjacking, eres engañado o estafado al ser desviado sobre dónde aterrizan tus clics. El clickjacking se siente más natural ya que no lo piensas dos veces y no ves venir el ataque (no es tan obvio).
Los clics disfrazados también pueden confirmar compras, OTPs y realizar transferencias sin requerir tu confirmación o autenticación. Los ataques de clickjacking pueden usar elementos de la interfaz para otorgar permisos que pueden ser activados bajo pretextos falsos. También puede activar tu cámara, micrófono y configuraciones de ubicación y exponer tu privacidad mediante superposiciones engañosas.
¿Entonces un ataque de clickjacking es una especie de error del navegador? No realmente, pero puede abusar de las funciones estándar de tu sitio como el uso de capas y iframes.
¿Puede la autenticación de inicio de sesión único prevenirlo? No, no funcionará porque un ataque de clickjacking puede manipular tu interfaz mientras que tu SSO solo se encarga de gestionar la identidad.
Tanto las aplicaciones móviles como las aplicaciones híbridas pueden verse afectadas por ataques de clickjacking, especialmente si se utilizan para mostrar contenido externo.
¿Cómo detectar vulnerabilidades de clickjacking?
Una de las mejores formas de detectar vulnerabilidades de clickjacking es intentar enmarcar tu página web desde otros servidores.
- Abre un entorno local y crea un archivo HTML simple. Llamémoslo tu archivo HTML de Prueba de Concepto (PoC). Ahora, utiliza una etiqueta <iframe> dentro del cuerpo HTML. Inserta la URL de la página sensible que deseas probar con tu etiqueta
<iframe>. - Reemplaza la URL de destino con la URL de la página que deseas probar. Guarda y visualiza la página en tu navegador. Si el contenido de tu página objetivo se carga correctamente (el que mencionaste en tu etiqueta iframe), entonces tu sitio probablemente sea vulnerable. Si no se carga, entonces estás protegido.
- Esta es la primera forma de detectar una vulnerabilidad de clickjacking, lo que llamamos prueba manual.
Otra forma de averiguarlo es probar la evasión de defensas. Puedes usar un script simple de frame-busting si JavaScript ha sido deshabilitado por tu navegador web. También puedes usar técnicas avanzadas como el doble enmarcado para la prevención y prueba de ataques de clickjacking.
Los escáneres automáticos de vulnerabilidades pueden analizar aplicaciones web en busca de encabezados HTTP anti-clickjacking mal configurados y algunos pueden inspeccionar los encabezados de respuesta HTTP en las pestañas de red. Cualquier página sin encabezados como X-Frame-Options y Content-Security-Policy es susceptible.
También existen herramientas que pueden grabar tus clics en páginas objetivo y reproducirlos con superposiciones de interfaz de ataque para simular escenarios reales de ataque. Estas pueden ayudarte a encontrar diversas vulnerabilidades de clickjacking.
¿Cómo prevenir ataques de clickjacking?
Aquí tienes algunas formas de prevenir ataques de clickjacking:
Usa Permissions Policy para controlar funciones del navegador
Los navegadores modernos te permiten limitar qué funciones pueden acceder los iframes incrustados. Configura el encabezado Permissions-Policy para deshabilitar fullscreen, geolocalización, cámara, micrófono y APIs de solicitud de pago. Esto impide que los atacantes secuestren funciones sensibles del navegador mediante superposiciones. Incluso si logran engañarte para hacer clic, no podrán activar permisos peligrosos sin tu autorización explícita. Es una capa de defensa inteligente que restringe lo que los atacantes realmente pueden hacer con sus superposiciones.
Aplica restricciones de sandbox en iframes incrustados
Cuando incrustes contenido externo en iframes, el atributo sandbox lo restringe por defecto. Bloquea scripts, formularios y ventanas emergentes a menos que realmente los necesites. Usa los valores allow con cuidado—solo concede allow-scripts si el iframe realmente necesita JavaScript y evita allow-same-origin salvo que sea necesario. Esta estrategia de contención impide que contenido incrustado malicioso acceda a tu página principal o a los datos del usuario. Prueba regularmente tus configuraciones de sandbox para asegurarte de que siguen funcionando como se espera.
Monitorea el comportamiento de clics de usuario con event listeners
Agrega event listeners de JavaScript para rastrear de dónde provienen realmente los clics. Verifica si los clics provienen de elementos legítimos de la interfaz o de posiciones que no coinciden con los botones visibles. Compara event.target con event.currentTarget para detectar discrepancias. Esto ayuda a detectar clics que parecen dirigirse a elementos visibles pero en realidad impactan capas invisibles debajo de ellos. Aunque esto no detendrá a atacantes determinados, detecta trucos comunes de superposición y crea registros de auditoría para los equipos de seguridad.
Usa detección con Machine Learning e IA
Modelos avanzados de ML pueden ahora reconocer patrones de clickjacking analizando la disposición de la página y las interacciones del usuario. Estos sistemas detectan superposiciones sospechosas de iframes, posiciones inusuales de elementos y anomalías de comportamiento en tiempo real. Modelos CNN y redes neuronales entrenados con conjuntos de datos de phishing pueden identificar amenazas antes de que los usuarios resulten afectados. A medida que estas tecnologías mejoran, detectarán ataques sofisticados que pasan desapercibidos para las defensas tradicionales. Implementa detección automática de amenazas junto con tus encabezados HTTP para una protección más profunda.
Utiliza fingerprinting del navegador para identificar actividad sospechosa
Crea huellas digitales únicas para cada visitante basadas en su navegador, dispositivo y características de hardware. Compara las huellas con tu base de datos de usuarios conocidos. Si ves clics desde un nuevo dispositivo o ubicación nunca antes usados, márcalo para verificación adicional. El fingerprinting detecta emuladores, VPNs y herramientas de suplantación que los atacantes usan para ocultar su identidad. Combinado con análisis de comportamiento, te ayuda a separar usuarios reales de bots y estafadores que intentan ataques de clickjacking.
Muestra indicadores de autenticidad del sitio web a los usuarios
Muestra marcas de agua visuales o insignias de prueba de origen que demuestren que tu página es genuina y no ha sido alterada. Cuando los usuarios ven que estos indicadores desaparecen o cambian, es señal de una página falsificada o un ataque de superposición. El código defensivo de la interfaz puede detectar cuando tu página está siendo enmarcada y mostrar advertencias automáticamente. Los usuarios aprenden a confiar en estas señales visuales, dificultando que los atacantes los engañen para hacer clic en elementos ocultos.
Mejores prácticas para la prevención del clickjacking
A continuación, algunas de las mejores prácticas para prevenir el clickjacking:
1. Configura los encabezados HTTP X-Frame-Options
La primera línea de defensa es configurar el encabezado X-Frame-Options en tu servidor. Esto indica a los navegadores si tu página puede cargarse dentro de un iframe o frame. Tienes tres opciones principales aquí:
- 'DENY' es la opción más segura y bloquea que cualquier dominio enmarque tu contenido.
- 'SAMEORIGIN' permite solo a tu propio dominio enmarcar la página, lo cual funciona si necesitas enmarcado interno.
- 'ALLOW-FROM uri' te permite incluir en una lista blanca dominios de confianza específicos, pero úsalo con precaución debido a problemas de compatibilidad entre navegadores.
2. Implementa Content Security Policy con frame-ancestors
CSP es la forma moderna de prevenir el clickjacking y es más flexible que X-Frame-Options. Añades la directiva frame-ancestors a tu encabezado Content Security Policy y especificas qué dominios pueden enmarcar tu contenido. Configúralo en 'none' si no necesitas ningún enmarcado, o especifica dominios de confianza usando la sintaxis de CSP.
3. Asegura tus cookies de sesión con el atributo SameSite
Marca todas tus cookies de sesión con el atributo SameSite configurado en 'Strict' o 'Lax'. Esto evita que las cookies se envíen cuando tu página se carga dentro de un iframe desde otro dominio.
Combinado con otras defensas, esto bloquea que los atacantes secuestren sesiones de usuario autenticadas mediante ataques de enmarcado. La protección es más fuerte con 'Strict', pero 'Lax' ofrece un buen equilibrio entre seguridad y experiencia de usuario para navegación legítima entre sitios.
4. Añade código JavaScript de frame-busting
Incluye un script de frame-busting en la sección <head> de tu documento HTML. Este script verifica si tu página se está cargando dentro de un frame y automáticamente sale de él si se detecta. Es una capa de respaldo simple que funciona en la mayoría de los navegadores modernos. Asegúrate de que tu código de frame-busting sea sólido; evita técnicas obsoletas que los atacantes pueden eludir fácilmente con métodos avanzados como el doble enmarcado.
5. Usa window.confirm() para acciones críticas
Antes de permitir que los usuarios completen transacciones sensibles o realicen cambios en la cuenta dentro de iframes, utiliza el método window.confirm() para forzar una confirmación explícita. Esto crea un cuadro de diálogo que requiere que los usuarios reconozcan activamente lo que están a punto de hacer. Incluso si se eluden otras protecciones, esto añade fricción y detecta clics accidentales en los que confían los atacantes.
6. Prueba tus vulnerabilidades regularmente
Crea un archivo HTML simple localmente con una etiqueta iframe apuntando a la URL de tu sitio. Intenta cargarlo en tu navegador para ver si tu página aparece dentro del frame. Si se carga correctamente, eres vulnerable y necesitas implementar los encabezados mencionados. Si no se carga, tus protecciones están funcionando. Usa escáneres automáticos de vulnerabilidades para verificar la ausencia de encabezados X-Frame-Options y CSP en tus encabezados de respuesta HTTP. Las pruebas manuales combinadas con la automatización te dan una cobertura integral.
7. Monitorea posibles configuraciones incorrectas
Utiliza herramientas que puedan inspeccionar directamente los encabezados de respuesta HTTP desde las pestañas de red de tu navegador. Busca los encabezados X-Frame-Options y Content-Security-Policy en cada página. Cualquier página que carezca de estos encabezados es un objetivo potencial. Algunos escáneres automáticos también pueden probar evasiones de defensa y señalar debilidades en tu implementación.
8. Incorpora pasos de doble confirmación
Haz que tus usuarios confirmen dos veces antes de permitirles realizar una acción explícita y altamente sensible (como transferencias de dinero o eliminación de cuentas). No confíes solo en scripts del lado del cliente.
9. Educa a tus usuarios
Informa a tus empleados sobre los ataques de clickjacking y cómo funcionan. Edúcalos sobre superposiciones sospechosas, ventanas emergentes extrañas y solicitudes de permisos repentinas. Cualquier medida que implementes para prevenir el clickjacking, por favor compáralo con la hoja de referencia de clickjacking de OWASP y verifica si tu sitio está realmente protegido.
Conclusión
El clickjacking se está convirtiendo en un problema común hoy en día, pero no te preocupes, ahora sabes qué puedes esperar encontrar en el lado del navegador y del cliente. Los protocolos gestionados desde el servidor pueden restringir el uso de iframes en el navegador y defender contra ataques de clickjacking.
La efectividad de un ataque de clickjacking también dependerá del comportamiento del navegador. Si cumples con los mejores estándares web y prácticas de navegación segura, tú y tus usuarios probablemente estarán protegidos. Mantente alerta, revisa el cumplimiento de tu navegador y no olvides aprovechar al máximo X-Frame-Options y Content Security Policy para una protección suficiente.
Preguntas frecuentes
El clickjacking ocurre cuando los atacantes engañan a los usuarios para que hagan clic en elementos que no tenían la intención de seleccionar. Un sitio web malicioso superpone botones o enlaces invisibles sobre contenido legítimo. Cuando hace clic en lo que cree que es un botón normal, en realidad está activando algo oculto detrás de él. El atacante controla lo que sucede a continuación. Sus clics pueden desencadenar acciones no deseadas como cambiar la configuración de la cuenta, publicar contenido o autorizar permisos. Ni siquiera se dará cuenta de que ha sucedido.
La ausencia de encabezados X-Frame-Options es la principal razón por la que funciona el clickjacking. Si su sitio web no establece este encabezado, los atacantes pueden incrustarlo en iframes. No utilizar encabezados de Content Security Policy también lo deja vulnerable. Algunos sitios no validan correctamente las acciones de los usuarios, lo que facilita engañar a los visitantes. Los sitios web que no implementan técnicas anti-framing son objetivos. Los frameworks antiguos sin protecciones integradas están especialmente en riesgo. Las aplicaciones que manejan operaciones sensibles necesitan defensas adecuadas, o el clickjacking logrará su objetivo.
Los desarrolladores deben configurar la cabecera X-Frame-Options en DENY o SAMEORIGIN. Esto evita que los navegadores carguen su sitio dentro de iframes. También puede usar Content Security Policy con la directiva frame-ancestors para controlar el enmarcado. Revise todas las acciones de usuario importantes, especialmente las sensibles como pagos o cambios de permisos. Añada indicadores visuales para que los usuarios sepan cuándo están interactuando con botones reales. Pruebe su sitio regularmente para detectar vulnerabilidades de enmarcado. Utilice código JavaScript de frame-busting como protección adicional si se utilizan navegadores antiguos.
X-Frame-Options es un encabezado HTTP que indica a los navegadores si su sitio puede ser incrustado en un marco. Cuando se establece en DENY, su sitio no se cargará dentro de ningún iframe, en absoluto. SAMEORIGIN permite el uso de marcos solo desde el mismo dominio. ALLOW-FROM le permite especificar dominios de confianza que pueden incrustar su sitio. Los navegadores respetan este encabezado y bloquean intentos de incrustación desde otros sitios. Los atacantes no pueden superponer su contenido sin su permiso. Este encabezado sencillo elimina la principal herramienta que los atacantes utilizan para el clickjacking, haciendo que su tarea sea imposible.
Puedes verificar tus encabezados de respuesta utilizando herramientas en línea o las herramientas de desarrollador del navegador. Busca el encabezado X-Frame-Options en las respuestas HTTP de tu sitio. Si falta, eres vulnerable. Intenta crear un archivo HTML de prueba que incluya tu sitio en un iframe y verifica si se carga. Si aparece dentro del iframe, el clickjacking es posible. Las pruebas manuales ayudan, pero los escáneres de seguridad automatizados pueden encontrar problemas más rápido. Prueba tanto tu dominio principal como los subdominios. Recuerda realizar pruebas después de hacer cambios para confirmar que tu solución realmente funciona.
Primero, agregue el encabezado X-Frame-Options a todas sus respuestas. Establézcalo en DENY a menos que necesite permitir el uso de marcos. Utilice encabezados de Content Security Policy para protección adicional. Capacite a los usuarios para que estén atentos a comportamientos inusuales o mensajes inesperados. No asuma que los clics de los visitantes siempre son intencionales. Implemente tokens CSRF para las acciones importantes. Mantenga su framework y bibliotecas actualizados, ya que corrigen vulnerabilidades. Realice auditorías de seguridad regularmente para detectar configuraciones incorrectas. Pruebe sus defensas con frecuencia para asegurarse de que realmente funcionen cuando ocurran ataques.


