Diálogos maliciosos de “confirmar navegação”?

31

Alguns sites, como o StackExchange, exibem um "Tem certeza de que deseja sair desta página?" caixa de diálogo quando você tenta sair sob certas condições, como se você tivesse uma postagem que não tenha terminado de editar. Isso é útil!

Infelizmente, sites maliciosos ou infectados gostam de usar a mesma funcionalidade para dizer: "Ei! Você ainda não instalou nosso malware para solucionar os 111 vírus que definitivamente não estamos encontrando seu computador! ", e as opções" Sair desta página "e" Permanecer nesta página "são substituídas por algo como" Seja seguro. Instale nosso produto "e" Atire no próprio pé ". Isso é inútil!

O Javascript pode fazer coisas desagradáveis. Quando recebo uma dessas caixas de diálogo tentando impedir que eu saia de um site claramente malicioso, qual deve ser a minha resposta? É seguro clicar em "Deixar esta página" ou o que quer que tenha substituído o texto? Poderia um site mudar o comportamento do botão ou interceptar minha tentativa de navegar e desenhar sua própria caixa de diálogo falsa que faz o que um invasor quer quando clico nele?

    
por user2357112 31.08.2013 / 11:07

5 respostas

24

Apesar do que alguns desses diálogos dizem, eles não podem fazer nada malicioso . Você sempre pode clicar em OK ou Leave Page para fechar a página ofensiva sem quaisquer consequências.

Se o diálogo for muito longo e os botões estiverem fora da tela , você pode pressionar Enter para confirmar o fechamento da página.

Se você não tiver um teclado (dispositivos touchscreen), use o bookmarklet abaixo ou consulte a resposta do SimpleSimon (Chrome apenas).

Agora, alguns detalhes.

Há apenas uma maneira de executar alguma ação quando uma página é fechada: através do % eventoonbeforeunload . É claro que isso pode ser facilmente usado contra o usuário (por exemplo, quando ele tenta fechar uma página, ele abre sua cópia em uma nova janela), então é muito limitado.

Na verdade, a única coisa razoável que você pode fazer é abrir uma caixa de diálogo com texto personalizado e dois botões, um para deixar a página e um para ficar. A única coisa que uma página pode fazer com esse diálogo é definir seu texto. Botões e barra de título são imutáveis. Aqui está uma captura de tela do Firefox 3.6: ( muito versão antiga do Firefox)

Éclaroquequandovocêpermitequeaspessoasmostrempop-upscomqualquertextoeapenasbotõesOK/Cancel,vocêpodetercertezadequemaiscedooumaistardealgunscarasousarãovocê.

Na captura de tela acima, OK significa "Deixe esta página", mas a descrição personalizada sugere algo mais. Portanto, os navegadores alteraram as caixas de diálogo, por isso é mais difícil torná-las enganosas. Por exemplo, versões recentes do Firefox parecem ignorar o texto personalizado:

OChromemostraotextopersonalizado,massempreacrescentaumaperguntaperguntandoaousuáriooqueeledesejafazereosbotõesexplicitamentedeclaramsuasações:(masaindaépropensoàsmensagensde"vídeos de gatos"!)

AquiestáoInternetExplorer10,também"propenso a gatos":

OOpera12apenasignoraoeventoonbeforeunloade,sevocêtentarfecharumaabacomoessa,eleseráfechadocomoqualqueroutro.EunãotesteioúltimoOpera,noentanto.

Então,pararesumirascoisasmaisimportantes:

  • Aspáginasnãopodemmostrarcaixasdediálogocomqualquertexto.Ositepodepediraonavegadorparamostrarumacaixadediálogocomumtextopersonalizado,masonavegadorpodeignorá-locompletamente(Opera),usartextogenérico(Firefox)ouexplicitamentedizeroquevaiacontecer(Chrome,IE).
  • Osdetalhesdacaixadediálogodependemdonavegadorquevocêestáusando,masosbotõessãosempreimutáveis.Seelesnãodisseremexplicitamentequaldelesfazoquê,entãoOKsignifica"deixar esta página" e Cancelar é "ficar aqui".
  • Os sites não podem realizar ações maliciosas se você decidir deixá-los. Seus arquivos não serão substituídos por vídeos de gatos, você não será inundado com vírus 135234 e o FBI não será informado de que você possui software ilegal em seu computador.

Você pode desativar o evento onbeforeunload , se quiser, impedindo que as páginas peçam que você saia ou permaneça. Aqui está um userscript entre navegadores. (role para baixo se o link estiver morto)

Se você estiver em um site específico que mostra um pop-up malicioso e ainda tem medo de clicar em Deixar , é possível criar um bookmarklet para removê-lo. Clique com o botão direito na barra de favoritos, escolha Novo marcador (ou equivalente) e cole-o como um URL: (é apenas um código minifed do link acima)

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

Em seguida, basta clicar nesse marcador e o pop-up será removido temporariamente da página ativa.

Se você quiser testar como esses pop-ups aparecem em seu navegador ou testar o bookmarklet / userscript, crie um arquivo de texto com o código a seguir e salve-o como um arquivo .html :

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

Parece que o link userscript está morto agora, então aqui está uma cópia extraída de archive.org cache . Todo o crédito para o criador original do script.

// ==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);
    
por 31.08.2013 / 12:46
10

Na verdade, o FireFox tem uma solução bastante bacana (e fácil). Se você digitar

about:config

na barra de endereço e, em seguida, role para baixo até

dom.disable_beforeunload

e defina seu valor como True você não verá mais os pop-ups de Leave Page. No FireFox. Pena que não há uma solução semelhante no Chrome.

    
por 17.10.2015 / 05:06
7

A solução mais simples no Chrome é travar a guia.

Digite chrome: // crash na barra de endereço e salve como um favorito .

Na próxima vez que você quiser sair dessa página, basta clicar no marcador e ele matará essa guia instantaneamente, sem afetar suas outras guias. Não há necessidade de matar toda a sessão do navegador, como alguns outros sugeriram.

Como alternativa, você pode suspender a guia usando chrome: // hang e, em seguida, fechar a guia sem executar nenhum JavaScript.

Não tenho certeza se isso é possível em outros navegadores.

    
por 21.10.2014 / 12:23
1

Este é o evento window.onbeforeunload e um recurso do navegador da web. Portanto, este deve ser um diálogo fixo do navegador da web. Você pode experimentar navegadores diferentes e, assim, você pode ver que as caixas de diálogo estão em designs diferentes.

Mas eu suponho, você poderia desenvolver um pop-up com javascript, que parece muito semelhante ao pop-up original do navegador. E se for um bom desenvolvedor, ele também verificaria o tipo de navegador antes de mostrar o diálogo. ;)

Portanto, para ter certeza sobre uma caixa de diálogo original, você deve verificar em paralelo a caixa de diálogo correta, ou seja, aqui: link

Veja aqui outras informações sobre o evento: link
link

    
por 31.08.2013 / 11:30
0

Solução rápida se você não confiar no "pop-up" & suas intenções / ações:

Para o Chrome:

  • Escape para remover o pop-up

  • Clique com o botão direito na página

  • Selecione Inspecionar

  • Role para o topo

  • Clique com o botão direito na tag

  • Excluir nó

  • Fechar guia

Tenho certeza de que os outros navegadores têm opções semelhantes.

    
por 18.01.2014 / 16:21