L'accident est dû à un bug récemment découvert dans Chrome - et d'autres navigateurs WebKit(!)* - spécifiquement lié à %%30%30
, %0%30
ou %%300
dans l'URL, qui représentent tous internement le même symbole: null. Vous pouvez en savoir plus sur le bug ici.
Ce n'est pas un bug qui affecte la plupart des liens, donc en général, vous n'avez pas à vous inquiéter en survolant les liens.
Notes:
* D'autres navigateurs WebKit incluent Safari, Opera, navigateur Steam, Midori, S60 (Symbian), navigateur Blackberry et le navigateur Playstation 3 - mais pas Firefox, Internet Explorer ou Edge.
Édition: Ce bug a été corrigé dans Chrome 45.0.2454.101 comme l'a signalé Deltik.
Plus d'informations sur ce qui se passe
Le problème est lié au canoniqueur d'URL, qui s'exécute dès que vous survolez un lien - peut-être pour afficher le lien dans la barre d'état du navigateur, et pour précharger la page Web afin qu'elle se charge plus rapidement une fois cliquée.
Quant au rôle du canoniqueur d'URL:
Lorsqu'une URL est écrite en HTML
, elle peut être écrite sous une forme telle que /home
ou ../../home
, mais les navigateurs doivent traduire cette URL en quelque chose comportant un protocole et un domaine aussi, comme http://superuser.com/home
. De plus, l'URL peut contenir des échappements d'URL qui doivent être traduits, et ces échappements sont encodés en pourcentage, comme %%30%30
. (Une liste plus exhaustive des échappements d'URL ici).
La fonctionnalité gérant cette traduction d'URL est celle qui finit par provoquer le crash, car elle reçoit une entrée que les développeurs n'attendaient/prenaient pas en charge.
Voici un résumé du changement de code qui a corrigé le problème:
Gérer correctement les échappements imbriqués problématiques dans les chemins d'URL.
Plus précisément, si le décodage de l'entrée conduit à l'URL de sortie contenant une nouvelle séquence échappée, par exemple en convertissant l'entrée "%%30%30" en "%00", échapper le '%' initial en "%25" pour garantir que la séquence de sortie n'est pas traitée comme une nouvelle séquence d'échappement valide.
Cela garantit que la canonisation de la même URL une deuxième fois ne la modifiera pas, ce qui est important pour éviter les crashes et autres bugs en différents endroits dans des constructions de débogage et de version publiée.