Blog de ClockTools

Herramientas para desarrolladores

¿Qué es un Iframe en espacio aislado?

Una guía capacidad por capacidad para el sandboxing de iframe, orígenes opacos, interacciones de tokens y un diseño de vista previa HTML más seguro.

Por , desarrollador y editor | | Revisado bajo el ClockTools política editorial

Ilustración destacada de iframe en espacio aislado para ClockTools
Tabla de contenidos

Un iframe en espacio aislado es un documento de navegador incrustado con restricciones adicionales aplicadas por el iframe. caja de arena atributo. con un vacio caja de arena valor, el navegador comienza desde una línea de base restrictiva; individuo permitir-* Los tokens devuelven solo las capacidades que necesita el contenido incrustado. Para una vista previa de HTML, el diseño útil más seguro es no "confiar en el código". Se trata de "darle a la vista previa un límite separado, agregar los permisos mínimos y mantener los secretos fuera del experimento".

¿Qué cambia cuando un iframe está en un espacio aislado?

Un iframe normal crea un contexto de navegación anidado. La política del mismo origen, la política de permisos, la política de seguridad de contenido y los propios encabezados del sitio enmarcado siguen siendo importantes, pero el marco no queda automáticamente despojado de todas las capacidades del navegador.

Añadiendo caja de arena le pide al navegador que imponga un conjunto adicional de restricciones. el WHATWG HTML Estándar define el atributo como un conjunto de tokens desordenados y separados por espacios. La ausencia de un token mantiene vigente su correspondiente restricción de zona de pruebas; agregar un token elimina una restricción particular.

Esa dirección es fácil de malinterpretar:

```html

<iframe sandbox srcdoc="<p>Vista previa estática</p>"></iframe>

```

Esta es la forma restrictiva. No significa "no se seleccionaron opciones de zona de pruebas". Significa que el sandbox está activo y ninguna de sus capacidades opcionales ha sido restaurada.

```html

<iframe

sandbox="permitir scripts permitir-formularios"

srcdoc="<tipo de botón='botón'>Ejecutar</botón>">

</iframe>

```

Esta versión permite scripts y comportamiento de formularios, pero deja otras restricciones. El resultado exacto de la seguridad aún depende de dónde proviene el contenido y qué expone la aplicación circundante.

¿Qué restricciones se aplican por defecto?

El estándar completo contiene más detalles que una lista de verificación, pero estas categorías explican la mayor parte del comportamiento de vista previa.

Área restringidaLo que impide la línea de base restrictivaPor qué puede interesarle una vista previa
Ejecución de scriptJavaScript no se ejecutaEs posible que las vistas previas estáticas HTML/CSS no las necesiten
Envío de formularioNo se pueden enviar formulariosLos ejemplos interactivos pueden necesitar validación sin un envío real
Popups y nuevos contextosLas nuevas ventanas y pestañas están restringidasEvita que un ejemplo genere páginas libremente
Navegación de nivel superiorEl marco no puede reemplazar libremente la página de alojamientoEvita que una vista previa aleje el editor
Tratamiento de origenAl contenido se le puede asignar un origen opaco únicoSepara el almacenamiento y el acceso del mismo origen del host
DescargasSe bloquean las descargas sin el permiso pertinenteImpide que un ejemplo inicie archivos de forma predeterminada
modalesAlerta, confirmación y aviso están bloqueadosAlgunos ejemplos de enseñanza utilizan diálogos, pero interrumpen al usuario.

el Referencia de marco flotante de MDN enumera los tokens actuales y explica lo que restaura cada uno. Verifique esa referencia en lugar de copiar una lista de tokens antigua en un control de seguridad de larga duración.

¿Qué restauran los tokens de permiso comunes?

Piense en cada token como una decisión de capacidad, no como un cambio de conveniencia.

fichaCapacidad restauradaPregunta para hacer antes de agregarlo
permitir-scriptsJavaScript ejecución¿Esta vista previa realmente necesita comportamiento?
permitir-formulariosEnvío de formulario¿Puede el ejemplo enviar datos a un destino externo?
permitir-modalesalerta, confirmar, y rápido¿Puede un diálogo atrapar o interrumpir repetidamente al usuario?
permitir ventanas emergentesCreación de contextos de navegación emergentes.¿Es una nueva ventana parte del ejercicio previsto?
permitir-descargasDescargar iniciación¿El código de usuario debería crear archivos locales?
permitir-mismo-origenRetención del origen normal del recurso.¿Ese origen podría compartir privilegios o almacenamiento con el anfitrión?
permitir-navegación-superior-por-activación-de-usuarioNavegación de nivel superior iniciada por el usuario¿Dejar el editor es una acción explícita del usuario?

Algunas fichas interactúan. Revisarlos uno por uno es necesario pero no suficiente. El origen del documento enmarcado, ya sea srcdoc o una URL remota, la Política de seguridad de contenido del host y cualquier puente de mensaje entre el marco y el padre afectan el límite.

Diagrama de capacidad que muestra un iframe en espacio aislado con scripts, formularios y modales restaurados selectivamente mientras el acceso al mismo origen permanece restringido
Diagrama de capacidad que muestra un iframe en espacio aislado con scripts, formularios y modales restaurados selectivamente mientras el acceso al mismo origen permanece restringido

El diagrama describe un límite de permiso. No afirma que ningún conjunto de tokens haga que el código arbitrario sea inofensivo.

¿Por qué es importante un origen opaco?

sin permitir-mismo-origen, el contenido del espacio aislado se trata como si procediera de un origen especial que no pasa las comprobaciones normales del mismo origen. Los desarrolladores suelen llamar a esto un origen opaco o único.

para una en línea srcdoc vista previa, esa separación es valiosa. La vista previa puede representar un documento sin ser tratado como el mismo origen de la aplicación que la página del editor. No puede simplemente acceder al DOM principal o leer el almacenamiento del mismo origen como si fuera otro componente del host.

Origen opaco no significa "fuera de línea" o "red deshabilitada". Si se permiten scripts, el código de vista previa aún puede realizar solicitudes de red que las políticas del navegador y el destino permitan. Puede utilizar CPU y memoria, manipular su propio DOM y comunicarse a través de canales que el host expone deliberadamente. La frontera reduce la autoridad; no certifica el código.

MDN advierte particularmente sobre la combinación permitir-scripts y permitir-mismo-origen cuando el contenido incrustado es del mismo origen y puede eliminar su propio atributo de zona de pruebas. La lección importante es contextual: no restaurar ambas capacidades simplemente porque un ejemplo falla sin ellas.

¿Cómo configura la vista previa ClockTools su zona de pruebas?

el vivo ClockTools editor HTML en tiempo real construye la vista previa con srcdoc. Cuando JavaScript está habilitado, su valor de zona protegida de iframe es:

permitir-scripts permitir-formularios permitir-modales

La implementación omite intencionalmente permitir-mismo-origen, permitir ventanas emergentes, permisos de navegación superior y permiso de descarga. La interfaz etiqueta la vista previa como una caja de arena opaca, haciendo visible la decisión de origen en lugar de ocultarla en el código fuente.

Esa configuración admite ejemplos de enseñanza comunes: los scripts pueden actualizar la vista previa, los formularios pueden ejercitar la validación del navegador y el comportamiento de envío, y se pueden ejecutar ejemplos modales. No convierte código desconocido en código confiable. Por lo tanto, la propia guía del editor les dice a los usuarios que eviten secretos y revisen guiones desconocidos.

La página también captura mensajes de la consola y expone un panel de verificación de documentos. Esas son características de observabilidad, no permisos de zona de pruebas. Un panel de consola ayuda a explicar una falla; no impide una solicitud. Una verificación estructural puede señalar la falta de una etiqueta; no lleva a cabo una revisión de seguridad completa.

¿Qué mostró una verificación de capacidad?

Inspeccioné el elemento de vista previa renderizado en el espacio de trabajo ClockTools en vivo en lugar de depender únicamente del texto de marketing.

comprobarEstado vivo observadoSignificado
Fuente de vista previasrcdoc documento presenteEl HTML actual está incrustado directamente en el marco.
Atributo de zona de pruebaspermitir-scripts permitir-formularios permitir-modalesSe restablecen tres capacidades
Token del mismo origenausenteLa vista previa conserva un origen opaco.
Etiqueta de interfaz“caja de arena opaca”El límite se revela al usuario.
Paneles de soporteConsola y controles visiblesTiempo de ejecución y comentarios sobre documentos disponibles

El título del iframe era "Vista previa en vivo HTML", que también le da a la tecnología de asistencia una etiqueta de propósito para el documento incrustado.

Esta inspección confirma el límite configurado en ese momento. No prueba que todos los scripts posibles sean seguros y no reemplaza una revisión del puente de mensajes, el manejo de recursos externos, la Política de seguridad de contenido o futuros cambios de código.

¿Qué combinaciones de tokens merecen especial atención?

Utilice una revisión basada en amenazas en lugar de una receta de token universal.

permitir-scripts más permitir-mismo-origen

Este par puede debilitar seriamente el aislamiento cuando el documento incrustado tiene el mismo origen y puede afectar sus condiciones de incrustación. Si se requieren ambos, proporcione contenido que no sea de confianza desde un origen deliberadamente separado y analice las rutas de escape en lugar de tratar el atributo como el único límite.

Formularios más acceso a la red

permitir-formularios restaura el envío, pero los scripts y los elementos HTML ordinarios también pueden enviar solicitudes de otras maneras. Nunca coloque credenciales, datos privados de clientes o tokens de portador en una vista previa que no sea de confianza y asuma que el sandbox los contendrá.

Ventanas emergentes más comportamiento de escape

permitir ventanas emergentes permite que un marco abra un nuevo contexto de navegación. permitir-popups-para-escapar-sandbox permite que el nuevo contexto evite los indicadores heredados de la zona de pruebas. Esto puede resultar útil para un anuncio deliberadamente aislado o un enlace externo, pero amplía la superficie de revisión.

Navegación superior

Los permisos de navegación superior permiten que el marco reemplace la página principal en condiciones definidas. Un área de juegos de código rara vez necesita eso. Si la navegación es parte de la lección, considere interceptar y mostrar el destino en lugar de otorgar control de vista previa sobre la página de nivel superior.

¿Qué no puede proteger una caja de arena?

Un sandbox es un mecanismo de navegador, no una plataforma completa de código hostil.

  • No impide que un usuario abra el mismo contenido directamente fuera del marco.
  • No garantiza que los scripts permitidos sean rápidos, educados o estén libres de bucles infinitos.
  • No bloquea automáticamente todas las solicitudes de red.
  • No desinfecta HTML ni demuestra que una URL es segura.
  • No protege los secretos que ya se encuentran dentro de la vista previa.
  • No reemplaza la validación del lado del servidor para formularios reales.
  • No valida la accesibilidad, la semántica ni el comportamiento entre navegadores.
  • No protege otro servicio que acepte una solicitud de la vista previa.

Los límites también cambian con el tiempo a medida que evolucionan los navegadores y los estándares. El comportamiento de las funciones debe probarse en los navegadores que la audiencia realmente utiliza, y la lista de tokens debe revisarse con respecto a las especificaciones actuales.

¿Cómo debería diseñar una vista previa del código del navegador?

Empezar con el vacío caja de arena atributo, luego agregue una capacidad a la vez. Para cada adición, cree una pequeña prueba de aceptación y una prueba de abuso correspondiente.

Trabajo de lectorPunto de partida mínimoPrueba antes del lanzamiento
Renderizar estático HTML y CSSCaja de arena vacíaLos scripts, formularios, ventanas emergentes y la navegación superior permanecen bloqueados
Enseñar secuencias de comandos DOMAñadir permitir-scriptsLas ejecuciones de scripts, el DOM del host y el almacenamiento permanecen aislados
Demostrar la validación de formularios nativosconsiderar permitir-formularios sólo si se requiere la presentaciónLos destinos inesperados no pueden recibir datos confidenciales
Demostrar diálogosAñadir permitir-modales temporalmenteLos diálogos repetidos no pueden inutilizar el host
Cargar proyectos controlados por el usuarioOrigen separado más controles en capasSandbox, CSP, mensajería, recursos y límites se revisan juntos

Mantenga estrecho el protocolo de mensajes del marco principal. Valide el remitente, la forma del mensaje y los comandos permitidos. No acepte código arbitrario o instrucciones de navegación a través de un mensaje genérico de "ejecución" a menos que sea el producto explícitamente aislado que desea crear.

Ofrezca un modo JavaScript-off para inspección estática. Agregue controles de parada, reinicio o recarga para ejemplos fuera de control. Errores de la consola Surface sin reflejar datos principales confidenciales en el marco. Trate las hojas de estilo y los scripts externos como dependencias de la red cuyos hosts y contenidos futuros están fuera del control del editor.

Para un experimento enfocado, el editor HTML en tiempo real expone anchos de respuesta, captura de consola, comprobaciones y su estado opaco de zona de pruebas. Para trabajos de lanzamiento que involucren paquetes, servidores, credenciales, pruebas o implementación, mueva el código a un repositorio local y utilice un flujo de trabajo de desarrollo y revisión de seguridad más completo.

Preguntas frecuentes

¿Qué hace el atributo iframe sandbox?

Aplica restricciones adicionales al documento enmarcado. Un valor de espacio aislado vacío comienza desde la línea base restrictiva, mientras que los tokens de permiso separados por espacios restauran capacidades seleccionadas, como scripts o formularios.

¿El espacio aislado significa que el iframe es completamente seguro?

No. El sandboxing reduce la autoridad, pero no garantiza que el código sea confiable, bloquee cada solicitud de red, evite el agotamiento de los recursos, desinfecte HTML ni proteja los secretos colocados dentro de la vista previa.

¿Qué es un origen opaco en un iframe de espacio aislado?

Cuando no se permite el mismo origen, se considera que el documento enmarcado tiene un origen especial que no pasa las comprobaciones normales del mismo origen. Esto ayuda a evitar que actúe como el mismo origen de aplicación que el padre.

¿Por qué son riesgosos los scripts permitidos con permiso del mismo origen?

Para contenido del mismo origen, restaurar ambas capacidades puede socavar el aislamiento que la zona de pruebas debía proporcionar, incluidos escenarios en los que el código enmarcado puede eliminar la zona de pruebas. Utilice un origen separado y una revisión completa de amenazas cuando ambos sean necesarios.

¿Puede un iframe en espacio aislado realizar solicitudes de red?

Potencialmente, sí. El sandboxing no actúa como un firewall de red universal. Los scripts permitidos y los recursos HTML aún pueden realizar solicitudes que la política del navegador y el destino permitan.

¿Un parque infantil HTML debería permitir JavaScript?

Sólo cuando el trabajo del lector lo necesita. Un visor estático HTML/CSS puede mantener los scripts bloqueados. Un área de juegos interactiva puede agregar scripts de permiso al mismo tiempo que conserva un origen opaco y superpone controles de recursos, mensajería, restablecimiento y manejo de secretos.

Acerca del autor

Vigneshwaran Vijayakumar

Fundador, desarrollador y editor de ClockTools | Gerente de Marketing Digital | India

Vigneshwaran es un ingeniero con décadas de experiencia técnica, incluido un trabajo profesional como director de marketing digital en Dubái. Su trabajo conecta el análisis de datos, la optimización de motores de búsqueda, la optimización de la tasa de conversión, los sistemas de contenido, la producción visual y la IA aplicada y el aprendizaje automático. En ClockTools, convierte esa experiencia multidisciplinaria en utilidades de navegador enfocadas y guías prácticas que tienen en cuenta las fuentes.

perfil de LinkedIn