Bonsoir,
je crois qu'il serait bon de répéter certaines choses importantes qui, semblerait-il, passent inaperçues aux yeux de beaucoup de gents:
ce genre de script est à bannir car il présente un énorme risque de sécurité. Pour illustrer mon propos, prenons un petit exemple.
Si l'on regarde attentivement au script montré orgueilleusement par notre ami armoric nous pouvons constater un gros problème. La variable qui contient le nom du fichier est dans l'argument $_REQUEST['file'].
Donc si l'on veut télécharger le fichier 'blabla.pdf' il suffit de faire l'appel à la page de la manière suivante:
download_file.php?file=blabla.pdf
jusque là, tout va bien dans le meilleur des mondes.
Problème... c'est qu'Internet n'est pas le meilleur des mondes. Bien au contraire, c'est un lieu où se tapissent les pires loups qui attendent la brebis égarée.
En termes concrêt voici ce qu'un hacker peux faire avec ce superbe script présenté plus haut (en supposant que le répertoire de stockage est /documents/downloads/
on commence par:
download_file.php?file=index.php
Pas de résultats, c'est que la racine du site est plus haut dans l'arborescence
donc on recommence avec un niveau supérieur:
download_file.php?file=../index.php
Toujours pas de résultats, on continue:
download_file.php?file=../../index.php
BINGO!!! je récupère le fichier index.php du site. En auscultant le code, je peux y trouver les chemins d'accès aux fichiers de configurations d'accès à la base de données... qu'il me suffira de donner en argument au merveilleux script dont nous parlons.
Ce qui fait que en moins de 5mn, j'ai parcouru l'arboresence du site et j'ai tous les codes d'accès à la base de données.
Merci... super code...
Pour ceux que ça intéresse, j'ai crée une source php facilement implémentable dans tout site voulant ajouter la fonction de téléchargement de fichier. Il s'agit d'un mécanisme de jetons avec lesquels vous donner accès à un fichier par l'intermédiaire d'un lien de téléchargement codé. Il n'est pas possible de télécharger autre chose que ce qui est mis à disposition et même si quelqu'un s'amuse à jouer avec les numéros de jetons tout ce qu'il pourra obtenir après de nombreuses tentatives, c'est un fichier qui était programmé au téléchargement. Donc pas de risques de sécurités.
Le script peut être téléchargé à l'adresse suivante:
http://www.phpcs.com//code.aspx?ID=48434
Cordialement