Bonjour tout le monde,
Je viens de me rendre compte qu'un script php de mon site comporte une énorme faille. Le script en question permet de lancer le téléchargement de fichiers images (.jpg et .png), mais à ma grande stupeur je viens de voir qu'il peut lancer n'importe quel fichier qui se trouve sur le site (fichiers php html même le htaccess 8O ) enfin bref, la brèche du siècle quoi
j'ai bien entendu retiré ce script en attendant de le sécuriser.
Ce script utilise une variable avec la fonction GET pour récupérer les chemins de fichiers à télécharger. Je souhaite donc interdire à la variable qui utilise la fonction GET, de ne pas traverser tous les répertoires, sauf celui qui contient les images. Comment je pourrais faire pour cela ?
Voici le code ce script :
Merci pour tout.
Je viens de me rendre compte qu'un script php de mon site comporte une énorme faille. Le script en question permet de lancer le téléchargement de fichiers images (.jpg et .png), mais à ma grande stupeur je viens de voir qu'il peut lancer n'importe quel fichier qui se trouve sur le site (fichiers php html même le htaccess 8O ) enfin bref, la brèche du siècle quoi

Ce script utilise une variable avec la fonction GET pour récupérer les chemins de fichiers à télécharger. Je souhaite donc interdire à la variable qui utilise la fonction GET, de ne pas traverser tous les répertoires, sauf celui qui contient les images. Comment je pourrais faire pour cela ?
Voici le code ce script :
Code:
<?PHP
foreach ($_REQUEST as $key => $val)
{
$val = preg_replace("/[^_A-Za-z0-9-\.&=]/i",'', $val);
$_REQUEST[$key] = $val;
}
$fichier = $_GET['jpg_png'];
$nom = basename($fichier);
header("Content-disposition: attachment; filename=$nom" );
header("Content-Type: image/jpeg" );
header("Content-Transfer-Encoding: binary" );
header("Pragma: no-cache" );
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" );
header("Expires: 0" );
readfile($fichier);
?>
Merci pour tout.