Quando esse link ( http://a//%%30%30
) é clicado no Google Chrome, o Chrome interrompe e fecha todas as guias e instâncias.
Mas, em alguns casos, só preciso passar o mouse sobre o link e a guia trava.
O que acontece quando passe o mouse sobre este link? Quero dizer, o que o Chrome faz quando um link passa o mouse?
google-chrome
crash
LINQ
fonte
fonte
Respostas:
O acidente é devido a um bug descoberto recentemente no Chrome - e outros navegadores WebKit * - especificamente relacionada com qualquer um (!)
%%30%30
,%0%30
Ou%%300
como parte da URL, que internamente todos acabam representando o mesmo símbolo: nulo . Você pode ler mais sobre o bug aqui .Não é um bug que afeta a maioria dos links; portanto, você geralmente não precisa se preocupar em passar o mouse sobre os links.
Notas:
* Outros navegadores WebKit incluem Safari, Opera, Navegador Steam, Midori, S60 (Symbian), Navegador Blackberry e navegador Playstation 3 - mas não Firefox, Internet Explorer ou Edge.
Edit: Este bug foi corrigido no Chrome 45.0.2454.101 como aponta Deltik .
Mais sobre o que acontece
O problema está relacionado ao canonicalizer de URL , que é executado assim que você passa o mouse sobre um link - possivelmente para exibir o link na barra de status do navegador e para pré - buscar a página da Web para que ela carregue mais rapidamente quando clicada.
Quanto ao papel do canonizador de URLs:
quando um URL é gravado
HTML
, ele pode ser gravado em um formato como/home
or../../home
, mas os navegadores precisam traduzir esse URL para algo com um protocolo e um domínio tambémhttp://superuser.com/home
. Além disso, o URL pode conter Escapes de URL que precisam ser traduzidos , e esses escapes são codificados em porcentagem , como%%30%30
. (Uma lista mais exaustiva de URL escapa aqui ).A funcionalidade que trata dessa tradução de URL é o que está acabando, porque recebe informações que os desenvolvedores não esperavam / manipulavam.
Aqui está um resumo da alteração de código que corrigiu o problema:
fonte
URL canonicalizer
, que aparentemente começa a ser executado assim que você passa o mouse sobre um link, talvez por exibir o link na barra de status do navegador? Não posso dar uma resposta certa; no entanto, quando um URL é escrito em HTML, ele pode ser escrito em um formato como/home
or../../home
, mas os navegadores precisam traduzir esse URL para algo com um protocolo e um domínio também, comohttp://superuser.com/home
, por exemplo, talvez a manipulação de funcionalidade que está acabando falhando, porque recebe entrada inesperada?Como diz Fabio Turati,
No entanto, em sua postagem e comentário, acho que você está mais preocupado em saber se o Chrome se conecta ao link em segundo plano. Isso acontece com outros navegadores modernos ( Firefox , Opera ). Convém desativar a pré-busca nas preferências do Chrome ou instalar o uBlock Origin para obter mais configurações de privacidade.
fonte
Eu queria dar mais esclarecimentos sobre o que exatamente acontece aqui.
Basicamente,% 30 é um 0 codificado por URL e% 00 é um NULL codificado por URL (que é exibido em binário como 0000 0000). Portanto, se você tiver um URL que possua um caractere codificado aninhado que decodifique para NULL, o erro ocorrerá.
O Chrome faz o seguinte ao canonizar um URL (fonte: https://code.google.com/p/chromium/issues/detail?id=533361#c13 ):
Portanto, o URL é considerado válido primeiro, mas após a remoção de determinados dados particulares, ele é invalidado. No entanto, após a remoção desses dados, a função que chamou esse código específico espera um URL válido.
Parte do motivo pelo qual esse URL é considerado inválido é porque NULL é usado em vários softwares e idiomas mais antigos para indicar o fim de uma string (porque são basicamente 8 zeros em uma linha, o que é fácil de detectar em um computador).
fonte