Boîtes de dialogue de confirmation de navigation malveillantes?

32

Certains sites, comme StackExchange, affichent un message "Êtes-vous sûr de vouloir quitter cette page?" lorsque vous essayez de quitter sous certaines conditions, par exemple si vous avez une publication que vous n'avez pas terminé de modifier. C'est utile!

Malheureusement, les sites malveillants ou infectés aiment utiliser les mêmes fonctionnalités pour dire: « Hé! Vous n'avez pas installé notre logiciel malveillant antivirus pour traiter les 111 virus nous certainement pas mentir sur la recherche sur votre ordinateur! », Et « Laissez cette page "et" Restez sur cette page "les options sont remplacées par quelque chose comme" Soyez en sécurité. Installez notre produit "et" Tirez-vous dans le pied ". C'est inutile!

Javascript peut faire des choses désagréables. Lorsque j'obtiens une de ces boîtes de dialogue essayant de m'empêcher de quitter un site clairement malveillant, quelle devrait être ma réponse? Est-il sûr de cliquer sur "Quitter cette page" ou quoi que ce soit avec lequel ils ont remplacé le texte? Un site pourrait-il changer le comportement du bouton, ou intercepter ma tentative de navigation et dessiner sa propre fausse boîte de dialogue qui fait tout ce qu'un attaquant veut quand je clique dessus?

user2357112 prend en charge Monica
la source
1
Je tuerais tout le processus du navigateur depuis l'explorateur de processus ou son équivalent. Beaucoup plus sûr, car vous ne savez pas que le bouton indique réellement.
Journeyman Geek

Réponses:

24

Malgré ce que disent certains de ces dialogues, ils ne peuvent rien faire de malveillant . Vous pouvez toujours cliquer sur OK ou Quitter la page pour fermer la page incriminée sans aucune conséquence.

Si la boîte de dialogue est trop longue et que les boutons sont hors de l'écran , vous pouvez appuyer surEnter pour confirmer la fermeture de la page.

Si vous n'avez pas de clavier (appareils à écran tactile), utilisez le bookmarklet ci-dessous ou consultez la réponse de SimpleSimon (Chrome uniquement).


Maintenant, quelques détails.

Il n'y a qu'une seule façon d'effectuer une action lors de la fermeture d'une page: à travers l' onbeforeunloadévénement. Bien sûr, cela pourrait être facilement utilisé contre l'utilisateur (par exemple quand il essaie de fermer une page, il ouvre sa copie dans une nouvelle fenêtre), donc c'est très limité.

En fait, la seule chose raisonnable que vous pouvez faire est d'ouvrir une boîte de dialogue avec du texte personnalisé et deux boutons, un pour quitter la page et un pour rester. La seule chose qu'une page peut faire avec cette boîte de dialogue est de définir son texte. Les boutons et la barre de titre sont immuables. Voici une capture d'écran de Firefox 3.6: ( très ancienne version de Firefox)

Capture d'écran de Firefox 3.6

Bien sûr, lorsque vous laissez les gens afficher des popups avec n'importe quel texte et juste OK / Annuler boutons , vous pouvez être sûr que tôt ou tard certains gars l'utiliseront contre vous.

Capture d'écran d'une fenêtre malveillante de Firefox 3.6

Dans la capture d'écran ci-dessus, OK signifie simplement "Quitter cette page", mais la description personnalisée suggère quelque chose de plus. Les navigateurs ont donc modifié les boîtes de dialogue, il est donc plus difficile de les rendre trompeuses. Par exemple, les versions récentes de Firefox semblent ignorer le texte personnalisé:

Capture d'écran de Firefox 23

Chrome affiche le texte personnalisé, mais ajoute toujours une question demandant à l'utilisateur ce qu'il veut faire et les boutons indiquent explicitement leurs actions: (mais il est toujours sujet aux messages "vidéos de chat"!)

Capture d'écran de Chrome 29

Voici Internet Explorer 10, également «sujet aux chats»:

Capture d'écran d'IE 10

Opera 12 ignore simplement l' onbeforeunloadévénement et si vous essayez de fermer un onglet comme celui-ci, il se fermera comme les autres. Cependant, je n'ai pas testé le dernier opéra.

Donc, pour résumer les choses les plus importantes:

  • Les pages ne peuvent afficher aucune boîte de dialogue avec du texte. Le site Web peut demander au navigateur d'afficher une boîte de dialogue avec un texte personnalisé, mais le navigateur peut l'ignorer complètement (Opera), utiliser du texte générique (Firefox) ou dire explicitement ce qui se passera (Chrome, IE).
  • Les détails de la boîte de dialogue dépendent du navigateur que vous utilisez, mais les boutons sont toujours immuables. S'ils ne disent pas explicitement lequel fait quoi, alors OK signifie "quitter cette page * et Annuler est" rester ici ".
  • Les sites Web ne peuvent effectuer aucune action malveillante si vous décidez de les quitter. Vos fichiers ne seront pas remplacés par des vidéos de chats, vous ne serez pas inondé de virus 135234 et le FBI ne sera pas informé que vous avez un logiciel illégal sur votre ordinateur.

Vous pouvez désactiver l' onbeforeunloadévénement si vous le souhaitez, empêchant efficacement les pages de vous demander de quitter ou de rester. Voici un script utilisateur multi-navigateur . (faites défiler vers le bas si le lien est mort)

Si vous êtes sur un site Web spécifique qui affiche une fenêtre contextuelle malveillante et que vous avez toujours peur de cliquer sur Quitter , vous pouvez créer un bookmarklet pour le supprimer. Faites un clic droit sur votre barre de signets, choisissez Nouveau signet (ou équivalent) et collez-le comme URL: (c'est juste du code minifed du lien ci-dessus)

javascript:var x=document.createElement('script');x.type='text/javascript';x.innerHTML='onbeforeunload=function(){};';document.body.appendChild(x);

Cliquez ensuite sur ce signet et la fenêtre contextuelle sera temporairement supprimée de la page active.

Si vous souhaitez tester l'apparence de ces fenêtres contextuelles dans votre navigateur ou tester le bookmarklet / userscript, créez un fichier texte avec le code suivant et enregistrez-le en tant que .htmlfichier:

<html><body onbeforeunload="return 'My custom text.'">_</body></html>

Il semble que le lien userscript soit mort en ce moment, alors voici une copie extraite du cache archive.org . Tous les crédits pour le créateur du script original.

// ==UserScript==
// @name           Disable - remove onbeforeunload
// @namespace      
// @description    Disable - remove the annoying onbeforeunload event
// @include        *
// @author         netvisiteurs.com
// ==/UserScript==

var x = document.createElement('script');
x.type = 'text/javascript';
x.innerHTML = 'onbeforeunload = function() {};';
document.body.appendChild(x);
Gronostaj
la source
2
Je voudrais appuyer sur "OK" sur ce deuxième. Après tout, qui ne veut plus de vidéos de chats?
Daniel R Hicks
Ooh, Javascript pour désactiver la boîte de dialogue. Agréable!
user2357112 prend en charge Monica
Malheureusement, ce script utilisateur ne fonctionne pas de manière fiable sur certaines pages Web. La boîte de dialogue est toujours affichée bien que window.onbeforeunload et window.onunload soient nuls. Je ne sais pas comment ils y parviennent, je suppose que le gestionnaire est écrasé à un moment donné, puis remis à null peut-être lors d'un événement onclick.
Atan
10

En fait, FireFox a une solution plutôt astucieuse (et facile). Si vous tapez

about:config

dans la barre d'adresse, puis faites défiler

dom.disable_beforeunload

et définissez sa valeur sur True, vous ne verrez plus les fenêtres contextuelles Quitter la page. Dans FireFox. Dommage qu'il n'y ait pas de solution de contournement similaire dans Chrome.

Révérend Jim
la source
7

La solution la plus simple dans Chrome consiste à planter l'onglet.

Tapez chrome: // crash dans la barre d'adresse et enregistrez-le en tant que signet .

La prochaine fois que vous souhaitez quitter une telle page, cliquez simplement sur le signet et il tuera cet onglet instantanément, sans affecter vos autres onglets. Pas besoin de tuer toute la session du navigateur comme certains l'ont suggéré.

Alternativement, vous pouvez accrocher l'onglet à l'aide de chrome: // hang, puis fermez simplement l'onglet sans exécuter de JavaScript.

Je ne sais pas si cela est possible dans d'autres navigateurs.

SimpleSimon
la source
Les versions plus récentes de ces pages afficheront une autre fenêtre contextuelle sur toute action de l'utilisateur, comme un clic de souris ou une pression sur une touche, afin que vous ne puissiez plus chrome: // crash
rsaxvc
1

Il s'agit de l'événement window.onbeforeunload et d'une fonctionnalité du navigateur Web. Il devrait donc s'agir d'une boîte de dialogue fixe du navigateur Web. Vous pouvez essayer dans différents navigateurs et pour que vous puissiez voir, les boîtes de dialogue sont de conceptions différentes.

Mais je suppose que vous pourriez développer une popup avec javascript, qui ressemble très très similaire à la popup d'origine de celle du navigateur. Et si c'est un bon développeur, il vérifiera également le type de navigateur avant d'afficher la boîte de dialogue. ;)

Donc, pour être très sûr d'une boîte de dialogue originale, vous devez vérifier en parallèle la bonne boîte de dialogue, c'est-à-dire ici: http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm

Voir ici pour plus d'informations sur l'événement:
https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload
http://msdn.microsoft.com/en-us/library/ms536907% 28VS.85% 29.aspx

Chris
la source
0

Solution rapide si vous ne faites pas confiance au "popup" et à ses intentions / actions:

Pour Chrome:

  • Échapper pour supprimer la fenêtre contextuelle

  • Clic droit sur la page

  • Sélectionnez Inspecter

  • Faites défiler vers le haut

  • Clic droit sur la balise

  • Supprimer le nœud

  • Fermer l'onglet

Je suis sûr que les autres navigateurs ont des options similaires.

George 2.0 Hope
la source
3
Solution plus rapide: cliquez toujours sur Quitter cette page ;)
gronostaj