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 ); :

[caption id=”” align=”aligncenter” width=”773” caption=”dans l'alert, le chemin complet du fichier sur le disque local”]Screenshot IE[/caption]

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

[caption id=”” align=”aligncenter” width=”744” caption=”Le chemin complet est préfixé avec C:fakepath"”]Bug_MS[/caption]

Le chemin est maintenant “C:fakepathnom_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_pathporsche_06032005_exif2.jpg