Cuando http://a//%%30%30
se hace clic en este enlace ( ) en Google Chrome, Chrome rompe y cierra todas las pestañas e instancias.
Pero, en algunos casos, solo necesito pasar el mouse sobre el enlace y la pestaña se bloquea.
¿Qué sucede cuando paso el mouse sobre este enlace? Quiero decir, ¿qué hace Chrome cuando se cierne un enlace?
google-chrome
crash
LINQ
fuente
fuente
Respuestas:
El accidente se debe a un fallo recientemente descubierto en el cromo - y otros navegadores WebKit * - ya sea específicamente relacionada con (!)
%%30%30
,%0%30
O%%300
como parte de la URL, que internamente todos terminan representando el mismo símbolo: nula . Puedes leer más sobre el error aquí .No es un error que afecta a la mayoría de los enlaces, por lo que generalmente no tiene que preocuparse por desplazarse sobre los enlaces.
Notas:
* Otros navegadores WebKit incluyen Safari, Opera, Steam Browser, Midori, S60 (Symbian), Blackberry Browser y el navegador de Playstation 3, pero no Firefox, Internet Explorer o Edge.
Editar: este error ahora se ha corregido en Chrome 45.0.2454.101 como señala Deltik .
Más sobre lo que pasa
El problema está relacionado con el canonicalizador de URL , que se ejecuta tan pronto como pasa el mouse sobre un enlace, posiblemente para mostrar el enlace en la barra de estado del navegador y para buscar previamente la página web para que se cargue más rápido una vez que se hace clic.
En cuanto a la función del canonicalizador de URL:
cuando se escribe una URL
HTML
, se puede escribir en una forma como/home
o../../home
, pero los navegadores también necesitan traducir esta URL a algo con un protocolo y un dominio, comohttp://superuser.com/home
. Además, la URL puede contener escapes de URL que deben traducirse , y estos escapes están codificados en porcentaje , como%%30%30
. (Una lista más exhaustiva de URL escapa aquí ).La funcionalidad que maneja esta traducción de URL es lo que termina fallando, porque recibe información que los desarrolladores no esperaban / manejaban.
Aquí hay un resumen del cambio de código que solucionó el problema:
fuente
URL canonicalizer
, que aparentemente comienza a ejecutarse tan pronto como pasa el mouse sobre un enlace, ¿tal vez por mostrar el enlace en la barra de estado del navegador? No puedo dar una respuesta cierta, sin embargo, cuando una URL está escrito en HTML, que puede escribirse en una forma tal como/home
o../../home
, pero los navegadores que traducir este URL para algo con un protocolo y un dominio también, al igual quehttp://superuser.com/home
, por lo tal vez el manejo de la funcionalidad que es lo que termina fallando, porque recibe una entrada inesperada?Como dice Fabio Turati:
Sin embargo, por su publicación y comentario, creo que le preocupa más si Chrome se conecta al enlace en segundo plano. Lo hace , al igual que otros navegadores modernos ( Firefox , Opera ). Es posible que desee deshabilitar la captación previa en las preferencias de Chrome o instalar uBlock Origin para obtener más configuraciones de privacidad.
fuente
Quería dar más aclaraciones sobre lo que sucede exactamente aquí.
Básicamente,% 30 es un 0 codificado por URL y% 00 es un NULL codificado por URL (que se muestra en binario como 0000 0000). Entonces, si tiene una URL que tiene un carácter codificado anidado que se decodificará en NULL, se produce el error.
Chrome hace lo siguiente al canonizar una URL (fuente: https://code.google.com/p/chromium/issues/detail?id=533361#c13 ):
Por lo tanto, la URL primero se considera válida, pero después de eliminar ciertos datos privados, se invalida. Sin embargo, después de que se eliminan esos datos, la función que llamó a ese código en particular espera una URL válida.
Parte de la razón por la cual esta URL se considera inválida es porque NULL se usa en varios programas e idiomas más antiguos para indicar el final de una cadena (porque son básicamente 8 ceros en una línea, lo cual es fácil de detectar para una computadora).
fuente