Développeurs web : attention à la vulnérabilité Target=”_blank”

Aujourd’hui, parlons développement web, notre coeur de métier chez Interaktive. Sur les sites web, il est très fréquent de retrouver le fameux attribut “target=’_blank’” dans les balises réservées au liens hypertexte : la balise <a>. Cet attribut permet d’ouvrir le lien cible dans un nouvel onglet, en gardant la page d’origine ouverte. Mais derrière ce code si fréquemment utilisé se cache une vulnérabilité qui peut porter atteinte à la sécurité de votre site internet.

En effet, la page web nouvellement ouverte a partiellement accès à la page web d’origine, via l’objet JavaScript window.opener. Un script pourrait donc facilement modifier l’attribut window.opener.location, et ainsi rediriger cet onglet vers le site de son choix, donc potentiellement vers une page de phishing ou hameçonnage.

Je m’explique... Par exemple, si vous étiez à la base sur le site web www. monsite.sn, vous pourriez être redirigé vers un faux site ayant l’apparence de ce dernier (clonage de site web) sans vous en rendre compte, et les informations que vous y entreriez pourraient se retrouver dans la base de données d’un pirate informatique par exemple.

Mais ce n’est pas tout, en plus d’être une faille de sécurité, ceci pose également un problème de confidentialité : la page ouverte a en théorie accès à l’URL exacte de votre page d’origine et pourrait se servir de cette information à mauvais escient. Les applications mobiles ne sont pas menacées par cette faille, seuls les sites web sont concernés.

Des géants du web exposés à cette faille

Ce qui est étonnant, c’est que de très gros sites ont été exposés à cette faille pendant des années, et certains le sont toujours. En effet, si Instagram y était encore exposé en Septembre 2016, d’autres sites comme Facebook le sont toujours. Selon Mic.com, Facebook se serait penché sur ce problème et travaillerait directement avec les navigateurs pour trouver une solution viable. Pour l’instant, Facebook se contenterait de bloquer les noms de domaine suspects.
Twitter n’y est apparemment exposé que sur Safari.

Comment sécuriser son site web

Plusieurs variables entrent donc en jeu pour se protéger contre cette vulnérabilité comme le navigateur, mais il existe une solution très simple. Il suffit d’ajouter “rel=noopener” à la balise <a>. Pour Firefox, qui ne supporte que partiellement cet attribut, il faut plutôt utiliser “rel=noopener noreferrer”. C’est cette solution que semble avoir utilisé Instagram, et c’est celle qui est recommandée en attendant une solution définitive dans les prochaines mises à jour de nos navigateurs web.

Il est donc important que les développeurs web fassent attention à ceci, un simple attribut en plus peut sécuriser un peu plus un site web.