C’est comme ça qu’on fixe les bugs chez MS

C’est passé assez inaperçu, mais pendant longtemps il y avait dans IE6, IE7 et même IE8 un bug fort pratique permettant d’accéder au chemin complet d’un fichier via un <input type="file">. Je dis pratique car il permettait aux plus malins d’entre nous d’afficher une fausse preview d’une photo à côté du champs.

Code :

<form>
<input type="file" id="file-upload" onchange="document.getElementById('thumb').src=this.value;" />
<img id="thumb" src="avatar_JP.jpg" />
</form>

Si vous avez des versions non patchées de IE6, 7 ou 8, vous pouvez le tester :


Les autres browsers se donnent simplement le nom du fichier, pour des raisons pas si évidentes que ça de sécurité : Il y a 5 ans de ça j’ai même expérimenté un virus qui exploitait cet oubli de MS.

Voici un screenshot de IE7 avec un alert( this.value ); :

Screenshot IE

dans l'alert, le chemin complet du fichier sur le disque local

Et voici la même page vue sur un IE8 patché :

Bug_MS

Le chemin complet est préfixé avec C: akepath"

Le chemin est maintenant « C:\fakepath\nom_image » … Ca sent le dévelopeur stressé qui quick fix discrètement un soft un peu trop gros pour lui :)

EDIT: Opera 10.10 fait quasi pareil ! : C:\fake_path\porsche_06032005_exif2.jpg

1 commentaire vers "C’est comme ça qu’on fixe les bugs chez MS"

  1. spider-mario's Gravatar spider-mario
    01/12/2010 - 23:47 | Lien permanent

    Pour que le code fonctionne sous les systèmes non-Windows, il faudrait préfixer le chemin vers l’aperçu par « file:// ».

    En effet, le code actuel donne à l’élément d’image une source de la forme “/…”, ce que le navigateur interprète comme un chemin relatif à la racine *du site Web*.

Laisser un commentaire

Vous pouvez utiliser ces HTML balises et les attributs: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>