Afin de limiter les risques liés à l'utilisation d'une iframe, le W3C propose l’attribut sandbox dans sa spécification du HTML5.

<iframe sandbox src=”...”></iframe>

Par défaut sandbox bloque toutes les interactions réalisables depuis une iframe.

Restrictions

  • Désactive le JavaScript sur l'iframe
  • les requêtes AJAX ne peuvent être lancées
  • Bloquer le stockage de cookies ou du localStorage
  • Bloque l'ouverture d'une nouvelle fenêtre, une popup
  • L’envoi de formulaire est interdit
  • Les plugins Flash, Silverlight ou encore les applets Java ne sont pas chargés
  • L’API Pointer lock, qui renvoit des informations liées aux mouvements de la souris, est bloquée

Autorisations

<iframe sandbox="valeur" src=”...”></iframe>

Sandbox accepte plusieurs valeurs autorisant autant d'interactions avec l'iframe.

  • allow-forms : l’envoi de formulaire est autorisé
  • allow-scripts : autorise l'execution de scripts
  • allow-same-origin : l’iframe reprend la même “origine” que la page, et ne fait plus face aux restrictions liées au mécanisme CORS (autorisation des requêtes AJAX, de l’utilisation du localStorage, de cookies…)
  • allow-top-navigation : l’iframe peut à nouveau accéder à la page parente
  • allow-popups : l’ouverture d’une nouvelle fenêtre/d’une popup est possible
  • allow-pointer-lock : l’API Pointer Lock est exploitable

ref: