Sécuriser l'upload de fichier en PHPde manière rigoureuse
Posté : 07 sept. 2010, 12:48
Bonjour,
j'aimerais sécuriser l'upload de fichiers.
Pour l'instant je fais des tests sur les fichiers .csv, mais je compte l'élargir aux pdf, voir aux .doc...
Mon code actuel est
Ce que j'aimerais c'est avoir un analyseur de fichiers coté PHP qui puisse déterminer le type MIME.
Apparament la fonction finfo_file() et toutes ses consoeurs correspondrait à mes besoins.
Mais je ne peux pas l'utiliser :
Fatal error: Call to undefined function finfo_open() in C:\repertoire\text.php on line 39
Je suis sous Windows et j'ai une version de PHP 5.1
Je ne sais pas à quelle extension est liée cette fonction, je pensait que c'etait php_fileinfo.dll
Mais après avoir
- téléchargé la dll sur http://dllcentral.com/php_fileinfo.dll/5.2.5.5/
- copié/collé la dll dans le repertoire ext/ à coté de toutes mes autres extensions
- puis en ayant rajouter l'extension dans mon fichier php.ini
- puis en ayant redémarré apache
, je tombe toujours sur la même fatal error, j'ai aussi essayé avec php_filepro.dll, cela me fait toujours pareil
bref, je ne sais plus à quelle bibliothèque me fier.
Quelqu'un pourait-il me dire comment installer la fonction finfo_open()?
Et de manière plus général quelqu'un pourrait-il me dire si je fais fausse route et comment analyse-t-on les fichiers uploadés en PHP de manière plus élaborée que la vérification de l'extension?
j'aimerais sécuriser l'upload de fichiers.
Pour l'instant je fais des tests sur les fichiers .csv, mais je compte l'élargir aux pdf, voir aux .doc...
Mon code actuel est
$t = $_FILES["fichier"];
//print_r($t);
$name=$t["name"];
$tmp_name=$t["tmp_name"];
$erreur=false;
if($t["error"]>0)$erreur="ERREUR code erreur = ".$t["error"];
//1 ere verif : moyennement fiable
$extension = strrchr($name, '.');
if($extension!=".csv")$erreur="<H1>ERREUR : Le fichier n'est pas au format CSV</H1>";
if($erreur!==false)
{
echo $erreur;exit;
}
Mais une simple vérification de l'extension ne me satisfait pas.Ce que j'aimerais c'est avoir un analyseur de fichiers coté PHP qui puisse déterminer le type MIME.
Apparament la fonction finfo_file() et toutes ses consoeurs correspondrait à mes besoins.
Mais je ne peux pas l'utiliser :
Fatal error: Call to undefined function finfo_open() in C:\repertoire\text.php on line 39
Je suis sous Windows et j'ai une version de PHP 5.1
Je ne sais pas à quelle extension est liée cette fonction, je pensait que c'etait php_fileinfo.dll
Mais après avoir
- téléchargé la dll sur http://dllcentral.com/php_fileinfo.dll/5.2.5.5/
- copié/collé la dll dans le repertoire ext/ à coté de toutes mes autres extensions
- puis en ayant rajouter l'extension dans mon fichier php.ini
- puis en ayant redémarré apache
, je tombe toujours sur la même fatal error, j'ai aussi essayé avec php_filepro.dll, cela me fait toujours pareil
bref, je ne sais plus à quelle bibliothèque me fier.
Quelqu'un pourait-il me dire comment installer la fonction finfo_open()?
Et de manière plus général quelqu'un pourrait-il me dire si je fais fausse route et comment analyse-t-on les fichiers uploadés en PHP de manière plus élaborée que la vérification de l'extension?