El Atributo SANDBOX

Se utiliza con la etiqueta iframe para restringir las capacidades del contenido incrustado, mejorando la seguridad al aislarlo del documento principal.
El atributo sandbox en HTML se utiliza con la etiqueta <iframe> para restringir las capacidades del contenido incrustado, mejorando la seguridad al aislarlo del documento principal. Este tutorial explica cómo implementarlo, sus valores y casos de uso comunes.
1. Introducción al atributo sandbox
-
Propósito:
Limitar las acciones que el contenido dentro de un<iframe>puede realizar, evitando riesgos como:-
Ejecución de scripts maliciosos.
-
Envío de formularios no autorizados.
-
Acceso al DOM del documento padre.
-
-
Contexto:
Esencial al incrustar contenido de terceros no confiable (ej.: comentarios de usuarios, widgets externos).
2. Sintaxis básica
El atributo se agrega a la etiqueta <iframe>.
Puede estar vacío (aplica todas las restricciones) o permitir ciertas funcionalidades mediante valores específicos:
<!-- Bloquea todas las capacidades --> <iframe src="url" sandbox></iframe> <!-- Permite algunas capacidades --> <iframe src="url" sandbox="allow-forms allow-scripts"></iframe>
3. Valores del atributo sandbox
| Valor | Descripción |
|---|---|
allow-forms |
Permite el envío de formularios dentro del iframe. |
allow-scripts |
Permite la ejecución de scripts (pero bloquea APIs peligrosas como eval). |
allow-same-origin |
Permite que el contenido se trate como del mismo origen que el documento padre. |
allow-popups |
Permite ventanas emergentes (ej.: window.open()). |
allow-modals |
Permite diálogos como alert() o confirm(). |
allow-orientation-lock |
Permite bloquear la orientación de la pantalla (útil en móviles). |
allow-pointer-lock |
Permite capturar el puntero del mouse (ej.: en juegos). |
allow-presentation |
Permite el modo de presentación (como Pantalla Completa). |
allow-popups-to-escape-sandbox |
Permite que las ventanas emergentes hereden el sandbox del padre. |
allow-top-navigation |
Permite que el iframe navegue en la ventana superior (peligroso). |
allow-top-navigation-by-user-activation |
Permite navegación superior solo si el usuario la activa (ej.: clic). |
4. Ejemplos prácticos
Ejemplo 1: Iframe con restricciones totales
<iframe src="https://ejemplo-externo.com" sandbox ></iframe>
-
Bloquea scripts, formularios, APIs y acceso al DOM padre.
Ejemplo 2: Permitir formularios y scripts
<iframe src="formulario.html" sandbox="allow-forms allow-scripts" ></iframe>
-
El iframe puede ejecutar scripts y enviar formularios, pero no acceder al DOM padre.
Ejemplo 3: Contenido del mismo origen con scripts
<iframe src="widget-interno.html" sandbox="allow-scripts allow-same-origin" ></iframe>
-
Útil para aislar componentes internos sin exponer el documento principal.
5. Buenas prácticas
-
Usa el sandbox incluso para contenido confiable: Minimiza riesgos de ataques.
-
Habilita solo lo necesario: Evita valores como
allow-scripts allow-same-originsi no son esenciales. -
Combina con CSP (Content Security Policy): Refuerza la seguridad con políticas HTTP.
-
Prueba en diferentes navegadores: Algunas restricciones pueden variar.
6. Casos de uso comunes
-
Widgets de terceros: Incrustar mapas o reproductores sin exponer datos sensibles.
-
Editores de texto enriquecido: Aislar el contenido editable para evitar XSS.
-
Demostraciones de código: Ejecutar ejemplos de código de forma segura.
7. Errores comunes
-
Permitir
allow-same-originsin necesidad: Expone el documento padre a ataques. -
Olvidar
sandboxen iframes externos: Riesgo de scripts maliciosos. -
Habilitar demasiados permisos: Anula el propósito de seguridad del sandbox.
8. Compatibilidad
-
Navegadores modernos: Chrome, Firefox, Safari y Edge soportan
sandbox. -
Navegadores antiguos: IE 10+ soporta la versión básica, pero algunos valores (como
allow-modals) son más recientes. -
Ver detalles en Can I use.
9. Conclusión
El atributo sandbox es clave para:
-
Proteger tu sitio de contenido incrustado no confiable.
-
Controlar permisos de forma granular en iframes.
-
Equilibrar funcionalidad y seguridad.
Ejemplo final:
<iframe src="https://formulario-externo.com" sandbox="allow-forms allow-scripts allow-same-origin" title="Formulario seguro" ></iframe>
Recuerda:
-
Nunca confíes únicamente en
sandbox; combínalo con otras prácticas de seguridad. -
Actualiza los permisos según las necesidades específicas de tu proyecto.
-
¡Prueba siempre en entornos reales antes de desplegar!
Con este tutorial, podrás implementar iframes más seguros y controlados en tus aplicaciones web. ????