[PhP] Forcer le download.
Résolu/Fermé
Zep3k!GnO
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
-
27 mars 2006 à 10:36
postgresophil - 3 juin 2015 à 13:04
postgresophil - 3 juin 2015 à 13:04
A voir également:
- Force download php
- Force download ✓ - Forum Téléchargement
- Extreme download - Accueil - Outils
- Instagram download - Télécharger - Divers Communication
- Alert php ✓ - Forum PHP
- Word 2013 free download - Télécharger - Traitement de texte
23 réponses
Le script mentionné ci-dessus est TRÈS INSÉCURE
Si par exemple on se trouve sur un serveur linux, il suffit de lui passer, par exemple,la valeur "../../../../../../etc/passwd" pour downloader le fichier /etc/passwd... On peut virtuellement accéder à n'importe lequel fichier du serveur à l'aide de ce script.
Utiliser plutot ce script, qui utilise basename() afin de se limiter aux fichiers du répertoire local, par exemple.
<?php
$file=$_GET['file'];
if (($file != "") && (file_exists("./" . basename($file))))
{
$size = filesize("./" . basename($file));
header("Content-Type: application/force-download; name=\"" . basename($file) . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
readfile("./" . basename($file));
exit();
}
?>
Si par exemple on se trouve sur un serveur linux, il suffit de lui passer, par exemple,la valeur "../../../../../../etc/passwd" pour downloader le fichier /etc/passwd... On peut virtuellement accéder à n'importe lequel fichier du serveur à l'aide de ce script.
Utiliser plutot ce script, qui utilise basename() afin de se limiter aux fichiers du répertoire local, par exemple.
<?php
$file=$_GET['file'];
if (($file != "") && (file_exists("./" . basename($file))))
{
$size = filesize("./" . basename($file));
header("Content-Type: application/force-download; name=\"" . basename($file) . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
readfile("./" . basename($file));
exit();
}
?>