Bonjour ...

j'ai récement tombé sur un forum qui expliquer comment construire un code de téléchargement des fichiers avec Php ( rien de nouveau jusqu'ici ) mais une personne a attiré mon intention et surtout ma curiosité en invocant une possible faille dans le code pour ceux qui s'y connaissent pas vraiment en Php.

Voici son message :

Fais attention, si tu passes la variable du nom de fichier à télécharger, ça pourrait permettre de télécharger presque n'importe quel fichier sur ton site ou même sur le serveur. Sinon, filename=$fichier enverra le chemin complet du fichier comme si c'était son nom. Il suffit de mettre filename=".basename($fichier)); pour que seul le nom du fichier soit envoyé, sans le reste du chemin.


le code qui a été donné est le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
$fichier = "dossier/tonfichier.ext"; 
header("Content-disposition: attachment; filename=$fichier"); 
header("Content-Type: application/force-download"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: ".filesize($fichier)); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
readfile($fichier);
ma question est plutôt simple ... je ne comprends pas sa mise en garde conte cette faille puisque je n'ai pas compris où elle se trouvé réellement.

donc, c'est quoi réellement la faille dont il parle ? et comment l'éviter ?

Merci pour vos réponses ...
Cordialement ...