Saltar al contenido principal
Didit recauda 7,5M $ para construir la infraestructura para identidad y fraude
Didit
Volver al blog
Blog · 14 de marzo de 2026

Seguridad de iFrames Incrustados: Guía para Desarrolladores Web (ES)

Los iFrames son herramientas potentes para incrustar contenido, pero conllevan riesgos de seguridad si no se manejan correctamente. Esta guía ofrece las mejores prácticas esenciales para proteger los iFrames, cubriendo.

Por DiditActualizado el
embedded-iframe-security-best-practices.png

Aísle sus iFrames con SandboxUtilice siempre el atributo sandbox para restringir las capacidades del iFrame, evitando que contenido no confiable ejecute scripts, acceda al almacenamiento local o envíe formularios.

Implemente una CSP RobustaUtilice los encabezados de Content Security Policy (CSP) para controlar qué recursos puede cargar y ejecutar su página, apuntando específicamente a los iFrames para prevenir problemas de contenido mixto e inyección de scripts.

Utilice X-Frame-Options y CSP Frame-AncestorsProteja su sitio del clickjacking configurando X-Frame-Options en DENY o SAMEORIGIN, y para navegadores modernos, use la directiva más granular frame-ancestors en su CSP.

Tenga Precaución con el Contenido ExternoExamine a fondo cualquier contenido de terceros incrustado a través de iFrames, ya que implícitamente está confiando en sus prácticas de seguridad. Prefiera soluciones que ofrezcan fuertes garantías de seguridad o permitan el procesamiento del lado del servidor.

La Espada de Doble Filo de los iFrames: Comodidad vs. Seguridad

Los iFrames (Inline Frames) son una parte integral del desarrollo web moderno, permitiendo a los desarrolladores incrustar contenido de otras fuentes en sus páginas web de manera transparente. Ya sea un video de YouTube, una pasarela de pago, un widget de redes sociales o un flujo de verificación de identidad, los iFrames ofrecen una flexibilidad inigualable. Sin embargo, este poder viene con una importante advertencia de seguridad. Sin las precauciones adecuadas, los iFrames pueden convertirse en vectores para varios ataques, incluidos el clickjacking, la inyección de scripts (XSS) y la fuga de datos. A medida que las aplicaciones web se vuelven más complejas e interconectadas, comprender e implementar las mejores prácticas de seguridad de iFrames ya no es opcional; es una necesidad.

El desafío principal con los iFrames radica en el hecho de que esencialmente está permitiendo que contenido externo se ejecute dentro del contexto de su propia página. Este contenido externo podría no adherirse a los mismos estándares de seguridad que su aplicación, o incluso podría ser malicioso. Por lo tanto, el objetivo de la seguridad de los iFrames es aislar este contenido incrustado lo más posible, limitando su potencial para interactuar o comprometer su documento principal y los datos del usuario.

Medidas Esenciales de Seguridad para iFrames: Sandboxing y CSP

1. El Atributo sandbox: Su Primera Línea de Defensa

El atributo HTML5 sandbox es posiblemente la característica de seguridad más crítica para los iFrames. Le permite aplicar un conjunto estricto de restricciones al contenido dentro del iFrame, aislándolo del resto de su página. Por defecto, simplemente incluir el atributo sandbox sin ningún valor aplica las restricciones más estrictas, tratando esencialmente el contenido del iFrame como si viniera de un origen único y evitando que los scripts se ejecuten, que los formularios se envíen y el acceso al almacenamiento local.

Aunque es muy seguro, el sandbox predeterminado puede ser demasiado restrictivo para muchos casos de uso. Puede levantar restricciones selectivamente proporcionando palabras clave específicas como valores al atributo sandbox:

  • allow-forms: Permite el envío de formularios.
  • allow-modals: Permite que el iFrame abra ventanas modales (como alert(), confirm(), prompt()).
  • allow-popups: Permite ventanas emergentes (por ejemplo, window.open()).
  • allow-popups-to-escape-sandbox: Permite que los documentos en sandbox abran nuevas ventanas sin heredar las restricciones del sandbox.
  • allow-pointer-lock: Permite la API de bloqueo de puntero.
  • allow-same-origin: Permite que el contenido del iFrame sea tratado como si fuera del mismo origen que el documento principal, lo cual a menudo es necesario para que el contenido incrustado funcione correctamente (por ejemplo, acceder a cookies, almacenamiento local). Úselo con extrema precaución.
  • allow-scripts: Permite la ejecución de JavaScript. Este es un permiso potente y solo debe otorgarse a fuentes confiables.
  • allow-top-navigation: Permite que el iFrame navegue por el contexto de navegación de nivel superior (es decir, cambie la URL de la ventana principal).

Mejor Práctica: Utilice siempre el atributo sandbox. Comience con el predeterminado (sin valores) y solo agregue los permisos mínimos necesarios. Por ejemplo, si está incrustando un formulario de pago, es posible que necesite allow-forms allow-scripts, pero definitivamente no querría allow-same-origin a menos que sea absolutamente necesario y haya sido exhaustivamente verificado.

<iframe src="https://trusted-payment-gateway.com/form" sandbox="allow-forms allow-scripts"></iframe>

2. Content Security Policy (CSP): Controlando la Carga de Contenido

Content Security Policy (CSP) es un potente mecanismo de seguridad que ayuda a mitigar varios tipos de ataques, incluyendo XSS y la inyección de datos. Al definir una CSP a través de un encabezado HTTP (Content-Security-Policy) o una etiqueta <meta>, puede especificar qué fuentes de contenido están permitidas para ser cargadas y ejecutadas por el navegador.

Para la seguridad de los iFrames, CSP es crucial de dos maneras principales:

  • Protegiendo el Padre del iFrame: Una CSP fuerte en su página principal puede evitar que un iFrame explotado cargue scripts o contenido maliciosos en su aplicación principal.
  • Protegiendo el iFrame del Padre (y viceversa): La directiva frame-src controla específicamente las fuentes válidas para los iFrames. La directiva frame-ancestors dicta qué orígenes tienen permitido incrustar el recurso actual (su página) en un iFrame, previniendo el clickjacking.

Ejemplo de Encabezado CSP:

Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com; frame-src 'self' https://trusted-iframe-source.com; frame-ancestors 'self';

Esta CSP permite scripts solo de su propio origen y trusted-cdn.com, y permite iFrames solo de su propio origen y trusted-iframe-source.com. Crucialmente, frame-ancestors 'self' asegura que su página solo pueda ser incrustada por sí misma, previniendo efectivamente el clickjacking.

Protección contra Clickjacking: X-Frame-Options y frame-ancestors

El clickjacking (rediseño de la interfaz de usuario) es un ataque en el que un sitio web malicioso superpone un iFrame transparente de su sitio sobre el suyo propio, engañando a los usuarios para que hagan clic en elementos de su sitio mientras piensan que están interactuando con el sitio malicioso. Esto puede llevar a acciones no autorizadas, como realizar compras, cambiar configuraciones o revelar información sensible.

1. Encabezado HTTP X-Frame-Options

El encabezado HTTP X-Frame-Options es una forma tradicional de prevenir el clickjacking. Le indica a los navegadores si una página puede ser renderizada en un <frame>, <iframe>, <embed> o <object>.

  • X-Frame-Options: DENY: La página no puede mostrarse en un marco, independientemente del sitio que intente hacerlo. Esta es la opción más segura.
  • X-Frame-Options: SAMEORIGIN: La página solo puede mostrarse en un marco en el mismo origen que la propia página.

Mejor Práctica: A menos que necesite explícitamente que su página sea incrustada por otros sitios (y en ese caso, use frame-ancestors con cuidado), configure X-Frame-Options: DENY para todas las páginas que manejan acciones de usuario sensibles.

2. Directiva frame-ancestors de CSP

La directiva frame-ancestors dentro de Content Security Policy es una alternativa más moderna y flexible a X-Frame-Options. Le permite especificar múltiples orígenes que tienen permitido incrustar su contenido.

Ejemplo:

Content-Security-Policy: frame-ancestors 'self' https://partner-site.com;

Esto permite que su página sea incrustada por sí misma y por partner-site.com. Si tanto X-Frame-Options como frame-ancestors están presentes, frame-ancestors generalmente tendrá prioridad en los navegadores modernos. Es una buena práctica usar ambos para una mayor compatibilidad con el navegador.

Manejo y Comunicación Responsable de Datos

Cuando los iFrames necesitan comunicarse con su ventana principal (o viceversa), el acceso directo a JavaScript suele estar bloqueado por la Política del Mismo Origen. El método seguro recomendado para la comunicación entre orígenes es window.postMessage().

Uso Seguro de window.postMessage()

window.postMessage() permite que las ventanas se comuniquen de forma segura entre sí a través de diferentes orígenes. Sin embargo, es crucial usarlo correctamente para evitar vulnerabilidades.

  • Siempre verifique el origen del remitente: Al recibir un mensaje, siempre verifique la propiedad event.origin para asegurarse de que el mensaje provino de una fuente esperada.
  • Especifique el origen de destino: Al enviar un mensaje, proporcione el origen de destino exacto (por ejemplo, iframeWindow.postMessage('hello', 'https://expected-origin.com');) en lugar de '*'. Usar '*' significa que cualquier ventana puede recibir su mensaje, lo cual es un riesgo de seguridad.
  • Saneé los datos recibidos: Trate cualquier dato recibido a través de postMessage() como entrada no confiable y sanéelo antes de usarlo para prevenir XSS.

Ejemplo (Padre enviando al iFrame):

const iframe = document.getElementById('myIframe');
iframe.contentWindow.postMessage('Hola desde el padre!', 'https://trusted-iframe-source.com');

Ejemplo (iFrame recibiendo del padre):

window.addEventListener('message', (event) => {
  if (event.origin !== 'https://parent-domain.com') {
    // Mensaje no del origen esperado, ignorar o registrar.
    return;
  }
  console.log('Mensaje del padre:', event.data);
  // Procesar datos, ¡pero sanearlos primero!
});

Cómo Didit Ayuda con Flujos de Trabajo Incrustables Seguros

Didit, como plataforma de identidad todo en uno, utiliza frecuentemente componentes incrustables para sus flujos de verificación de identidad. Nuestro enfoque se basa en la seguridad, comprendiendo la necesidad crítica de un aislamiento robusto de iFrames y flujos de trabajo. Didit proporciona enlaces de verificación alojados seguros y SDK web diseñados para integrarse sin problemas mientras se adhieren a los más altos estándares de seguridad.

  • Enlaces de Verificación Alojados: Didit genera URLs seguras y únicas para cada sesión de verificación. Estos enlaces redirigen a los usuarios a un entorno aislado y alojado por Didit, separando completamente el proceso de verificación sensible del dominio de su aplicación. Esto elimina la necesidad de un sandboxing complejo de iFrames por su parte para la verificación principal.
  • SDK Web con Fuerte Aislamiento: Para escenarios que requieren incrustación en contexto, el SDK web de Didit está diseñado para operar dentro de un iFrame seguro, aprovechando los atributos sandbox más estrictos necesarios. Gestionamos las complejidades de la comunicación segura entre orígenes utilizando postMessage(), asegurando que solo se intercambien datos necesarios y saneados entre el iFrame y su aplicación.
  • Cumplimiento y Certificaciones: Didit cuenta con las certificaciones SOC 2 Tipo II e ISO 27001, y cumple con el GDPR. Nuestra infraestructura y procesos están construidos para manejar datos de identidad sensibles de forma segura, reduciendo su carga de cumplimiento y riesgo.
  • Exposición Mínima de Datos: La arquitectura de Didit se basa en la privacidad desde el diseño. Para la verificación biométrica, las selfies se procesan en la memoria y se eliminan, y su aplicación recibe valores booleanos (por ejemplo, 'verificado'), nunca datos biométricos sin procesar. Esto minimiza la información sensible manejada dentro de cualquier componente incrustable.

Al utilizar las soluciones incrustables seguras y preconstruidas de Didit, las empresas pueden integrar la verificación de identidad avanzada sin convertirse en expertos en seguridad de iFrames, lo que les permite centrarse en su producto principal mientras garantizan la confianza del usuario y la protección de datos.

¿Listo para Empezar?

Asegurar sus iFrames es un paso crítico en la construcción de una aplicación web resiliente y confiable. Al aplicar diligentemente el sandboxing, CSP, X-Frame-Options y las prácticas seguras de postMessage(), puede aprovechar el poder del contenido incrustado sin exponer a sus usuarios o su aplicación a riesgos innecesarios. Explore las soluciones seguras de verificación de identidad de Didit para ver lo fácil que es integrar una seguridad robusta en sus flujos de trabajo.

Ver Precios de Didit | Explorar Documentación de Didit | Probar una Demo

Infraestructura para identidad y fraude.

Una API para KYC, KYB, Monitoreo de Transacciones y Detección de Fraude en Wallets. Intégrala en 5 minutos.

Pide a una IA que resuma esta página
Seguridad de iFrames: Mejores Prácticas para.