Passer au contenu
L'attribut sandbox pour sécuriser une iframe

L'attribut sandbox pour sécuriser une iframe

8 juillet 2019 vulnérabilité  html 

L'élément HTML iframe permet d'imbriquer un contenu extérieur dans votre page courante. C'est utilisé notamment pour intégrer une vidéo provenant de Youtube ou Vimeo, et pour bien d'autres usages. Mais savez-vous que cela constitue une faille de sécurité ?

C'est une blague ?

Et non ce n'est pas une blague, en intégrant un contenu extérieur à votre site par l'intermédiaire d'une iframe, il est possible d'exécuter sur votre site du javascript, d'ouvrir des popups et bien d'autres choses. Mais l'attribut sandbox, pour "bac à sable", est la pour vous aider :

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

Dès que vous ajoutez cet attribut, les restrictions suivantes se mettent en place sur l'url intégrée :

  • Aucun code javascript ne peut s'exécuter
  • Aucune requête AJAX ne peut fonctionner
  • Limitation des capacités de stockage du navigateur
  • Pas de popup (ouverture en nouvelle fenêtre)
  • Pas d'envoi de formulaire
  • Aucun chargement de plugins tiers comme Flash, Silverlight ou applet Java
  • Aucune information disponible pour les mouvements de souris (API Pointer Lock)

Un peu contraignant tout ça... Et si vous avez besoin d'exécuter un peu de javascript ou lancer des requêtes AJAX ou autres ?

L'attribut sandbox accepte différentes valeurs

<iframe sandbox="..." src="..."></iframe>
  • allow-forms : L'envoi de formulaire est autorisé
  • allow-scripts : Le javascript est autorisé
  • allow-same-origin : Les requêtes AJAX sont autorisées (et plus largement les restrictions liées au mécanisme CORS sont levées)
  • allow-top-navigation : L'iframe a le droit d'accéder à la page parente
  • allow-popups : L'ouverture en nouvelle fenêtre (popup) est autorisé
  • allow-pointer-lock : L'API Pointer Lock est utilisable
  • allow-orientation-lock : L'orientation de l'écran peut être dévérouillé

Concernant une intégration d'une vidéo Youtube il faudra faire confiance à Google et ajouter allow-scripts allow-same-origin si vous souhaitez utiliser l'attribut sandbox

Note : 4.6 - 8 votes Evaluer cet article
4.6

Par Thibaut Pietri

Ingénieur informatique spécialisé réseau, basé à Toulouse, j'ai plus de 20 ans d'expérience en développement et sécurisation de sites Internet, Extranet & applications mobiles autour des technologies LAMP (Linux/Apache/MySQL/PHP) sur différents outils de gestion de contenu (Wordpress, Prestashop, Drupal, Isens Evolution...).

Derniers articles

2 commentaires

  1. SolangeSolange

    Bjr
    Est ce que cela permettrait de tracker l envoi du formulaire avec google tag manager et google analytics?
    Merci

    Il y a 3 ans | Répondre

  2. Thibaut PietriThibaut Pietri

    @Solange
    Bonjour,
    Habituellement un formulaire ne sera pas dans une iframe mais s'affichera directement dans la page de votre site. Un code javascript fourni par Google vous permettra de tracker leur envoi.

    Il y a 3 ans | Répondre

 
Retour en haut de la page