Blocage navigateur attaque window opener
1️⃣ Comment les navigateurs modernes ont corrigé ce problème 🛡️⚓︎
Les navigateurs modernes, comme Chrome, Firefox, et Safari, ont mis en place plusieurs mécanismes pour empêcher ce genre de vulnérabilité.
A. Blocage automatique de window.opener avec target="_blank" 💡⚓︎
Dans les versions récentes des navigateurs, quand un lien utilise target="_blank", certains d'entre eux vont automatiquement empêcher l'accès à window.opener si le site n'a pas explicitement défini rel="noopener".
- Google Chrome a ajouté la sécurité "noopener" par défaut dans certaines versions.
- Firefox a suivi en désactivant la capacité de modifier la page d'origine via
window.openerdans ses versions récentes. - Safari met également en place une protection par défaut.
Cela signifie que dans ces navigateurs, même si tu ouvres un lien avec target="_blank", il n'y a plus de lien direct vers la page parent (donc impossible d’exécuter window.opener).
B. Option noopener et noreferrer renforcées 💪⚓︎
Les navigateurs n'ont pas seulement bloqué l'accès à window.opener en utilisant target="_blank", mais ils encouragent également l'usage des attributs rel="noopener" et rel="noreferrer" :
noopener: empêche l'accès auwindow.opener.noreferrer: en plus de l'effet denoopener, cela supprime les informations de référence (referrer) lorsqu'une page est ouverte dans un nouvel onglet, ce qui empêche le site cible de savoir d'où l'utilisateur vient (utile pour la confidentialité).
Si tu ajoutes ces attributs à tes liens externes, tu augmentes la sécurité de manière significative.
C. Sécurité des fenêtres pop-up 🛑⚓︎
Les navigateurs modernes bloquent aussi par défaut les pop-ups non sollicités. Cela empêche l’ouverture automatique de nouvelles fenêtres malveillantes.
2️⃣ Schéma étape par étape de l’attaque et de la protection⚓︎
Voici un schéma visuel étape par étape pour te montrer l’évolution de l’attaque et la manière dont les navigateurs modernes protègent contre cela.
Étape 1: Le lien malveillant sans protection⚓︎
- Site A : Lien avec
target="_blank", mais sansrel="noopener"(Vulnérable)
<a href="https://site-malveillant.com" target="_blank">Visiter notre partenaire</a>
Ce qui se passe :
L'onglet A (site légitime) ouvre un autre onglet avec le site B. Ce site malveillant peut accéder à window.opener et rediriger l'onglet A vers un site de phishing.
Étape 2: L'attaque par tabnabbing⚓︎
- Le site B redirige l'onglet A vers un site de phishing.
if (window.opener) {
window.opener.location = "https://faux-site-banque.com";
}
Ce qui se passe : Le site malveillant prend le contrôle de l'onglet A, en le redirigeant vers un faux site bancaire. L'utilisateur pense qu'il est toujours sur le site légitime.
Étape 3: Protection moderne (rel="noopener")⚓︎
- Le lien de Site A devient plus sécurisé en ajoutant
rel="noopener":
<a href="https://site-externe.com" target="_blank" rel="noopener">Visiter notre partenaire</a>
Ce qui se passe :
Le site malveillant n'a plus accès à window.opener et ne peut pas manipuler l'onglet A. Le lien s'ouvre normalement dans un nouvel onglet sans risque.
Étape 4: Protection renforcée (rel="noopener noreferrer")⚓︎
- Encore plus de sécurité en ajoutant
noreferrer:
<a href="https://site-externe.com" target="_blank" rel="noopener noreferrer">Visiter notre partenaire</a>
Ce qui se passe : En plus d’empêcher l'attaque par tabnabbing, le site B ne reçoit aucune information sur l'origine de l'utilisateur. Cela augmente la confidentialité et la sécurité.
Visualisation schématique⚓︎
Avant Protection :
[ Onglet A (site légitime) ] ---> [ Onglet B (site malveillant) ]
(Clique sur lien) (Modifie l'onglet A avec window.opener)
(Redirection vers phishing)
Après Protection :
[ Onglet A (site légitime) ] ---> [ Onglet B (site malveillant) ]
(Clique sur lien) (Pas de manipulation possible)
(L'onglet B ne peut rien changer à l'onglet A)
Résumé des bonnes pratiques :⚓︎
| Étape | Action | Sécurité |
|---|---|---|
| Sans Protection | target="_blank" sans rel="noopener" |
Risque élevé de tabnabbing |
| Avec Protection | target="_blank" rel="noopener" |
Empêche l'accès à window.opener |
| Protection Renforcée | target="_blank" rel="noopener noreferrer" |
En plus de bloquer window.opener, empêche la transmission de l'URL source |
Conclusion 🌟⚓︎
Les navigateurs modernes ont fait un bon travail pour bloquer les attaques par tabnabbing, mais il est toujours important de mettre en œuvre des pratiques sécurisées lors de la création de liens externes.