Sandbox de iframe y Permissions Policy
Restrinja el contenido incrustado con sandbox y Permissions-Policy
Sandbox de iframe y Permissions Policy es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.
Por qué usar iframes sandbox
El contenido no confiable de un iframe (widgets de terceros, vistas previas de HTML enviado por usuarios, juegos incrustados) no debería tener todas las capacidades del navegador. El atributo sandbox restringe lo que puede hacer el iframe y reduce el daño si resulta ser malicioso.
Sandbox vacío = máxima restricción
<iframe sandbox src="..."> sin valor aplica todas las restricciones: no permite scripts, formularios, ventanas emergentes ni navegación de nivel superior, no permite plugins y trata el contenido como un origen único. Use esto como punto de partida y añada únicamente lo que necesite el contenido incrustado.
Añadir capacidades
Los tokens de sandbox vuelven a habilitar capacidades específicas: sandbox="allow-scripts allow-same-origin" permite ejecutar scripts y acceder al mismo origen. Cada token relaja una restricción; combine el conjunto mínimo que realmente necesite el iframe.
<iframe sandbox="allow-scripts allow-same-origin" src="https://embed.example.com/widget"></iframe>Tokens habituales
allow-scripts habilita JavaScript. allow-forms habilita el envío de formularios. allow-popups habilita window.open. allow-same-origin evita tratar el iframe como un origen único (necesario para localStorage). allow-top-navigation permite navegar por la ventana principal.
La combinación peligrosa
Combinar allow-scripts con allow-same-origin en un iframe que usted también aloja le proporciona al iframe acceso completo a su origen, incluida la capacidad de eliminar su propio sandbox. Combine ambos únicamente con contenido confiable; para contenido no confiable, omita allow-same-origin.
Permissions Policy
Permissions Policy (antes Feature Policy) controla qué API del navegador (cámara, micrófono, geolocalización, pantalla completa, reproducción automática) pueden usar la página y sus iframes. Establézcala en el documento padre: Permissions-Policy: geolocation=() bloquea la geolocalización en todas partes.
Concesión de permisos por iframe
El atributo allow de un iframe invalida la política del padre para ese iframe: <iframe allow="camera; microphone"> permite usar esas API en el iframe aunque la política predeterminada del padre las deniegue.
<iframe
src="https://video-call.example.com"
allow="camera; microphone; fullscreen"
sandbox="allow-scripts allow-same-origin">
</iframe>Enumerar permisos
Las especificaciones evolucionan constantemente: cámara, micrófono, geolocalización, acelerómetro, giroscopio, magnetómetro, pagos, USB, MIDI, pantalla completa, reproducción automática, imagen en imagen y docenas más. Revise la lista y deniegue explícitamente todo lo que su página no necesite.
Informar de infracciones de la política
Permissions-Policy informa de las infracciones a un endpoint configurado, como report-uri de CSP. Use esta función durante una migración: habilite una política estricta, observe qué deja de funcionar y, después, relájela de forma gradual para las funciones legítimas.
Aislamiento del origen
Para páginas sensibles, establezca Cross-Origin-Opener-Policy: same-origin y Cross-Origin-Embedder-Policy: require-corp. Esto aísla la página de las ventanas de otros orígenes, protege contra ataques de temporización al estilo de Spectre y habilita SharedArrayBuffer.
Defensa en profundidad
Sandbox + Permissions Policy + CSP + COOP/COEP funcionan conjuntamente como capas. Cada uno protege contra una clase de ataque diferente. Incrustar contenido de terceros es lo bastante arriesgado como para que ninguna mitigación individual sea suficiente; combínelas para que otra detecte cualquier elusión de una de ellas.
Pruebas
Use los paneles Red y Problemas de Chrome DevTools para detectar infracciones de sandbox y de permisos. Muchas infracciones son silenciosas (la API simplemente devuelve undefined o rechaza la promesa); los endpoints de informes explícitos ayudan a descubrirlas en producción.
Comprobación de conocimientos
¿Por qué la combinación sandbox="allow-scripts allow-same-origin" puede ser peligrosa para un iframe alojado en su propio origen?
Resumen
Use sandbox en los iframes de forma predeterminada y añada únicamente los tokens que necesite el contenido. Evite allow-scripts+allow-same-origin con contenido no confiable. Use Permissions Policy para denegar API potentes en todo el sitio y el atributo allow del iframe para conceder excepciones. Combine estas medidas con CSP y COOP/COEP para obtener una defensa en profundidad.
Preguntas frecuentes
¿La lección «Sandbox de iframe y Permissions Policy» es gratis?
Sí — el texto completo de «Sandbox de iframe y Permissions Policy» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Sandbox de iframe y Permissions Policy»?
Restrinja el contenido incrustado con sandbox y Permissions-Policy Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar HTML Academy?
No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Sandbox de iframe y Permissions Policy»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de HTML Academy?
Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Content Security Policy: meta http-equiv
- XSS mediante innerHTML y cómo prevenirlo
- Sandbox de iframe y Permissions Policy
- HTTPS e integridad de subrecursos