From 64e783ab044fe82082c64130af1df6f5bd5365f7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 12 Apr 2007 20:25:12 +0000 Subject: [PATCH] =?UTF-8?q?Security:=20Ajout=20test=20pour=20=E9viter=20do?= =?UTF-8?q?wnload=20fichier=20hors=20htdocs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/lib/functions.inc.php | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php index 4ed1964c434..1f72affaf09 100644 --- a/htdocs/lib/functions.inc.php +++ b/htdocs/lib/functions.inc.php @@ -1381,13 +1381,14 @@ function dolibarr_print_error($db='',$error='') \brief Deplacer les fichiers telechargés, apres quelques controles divers \param src_file fichier source \param dest_file fichier de destination - \return int le resultat du move_uploaded_file + \return int true=Deplacement OK, false=Pas de deplacement ou KO */ function doliMoveFileUpload($src_file, $dest_file) { $file_name = $dest_file; - // On renomme les fichiers avec extentio executable car si on a mis le rep + // Security: + // On renomme les fichiers avec extention executable car si on a mis le rep // documents dans un rep de la racine web (pas bien), cela permet d'executer // du code a la demande. if (eregi('\.php|\.pl|\.cgi$',$file_name)) @@ -1395,6 +1396,24 @@ function doliMoveFileUpload($src_file, $dest_file) $file_name.= '.txt'; } + // Security: + // On interdit les remontées de repertoire ainsi que les pipe dans + // les noms de fichiers. + if (eregi('\.\.',$src_file) || eregi('[<>|]',$src_file)) + { + dolibarr_syslog("Refused to deliver file ".$src_file); + return false; + } + + // Security: + // On interdit les remontées de repertoire ainsi que les pipe dans + // les noms de fichiers. + if (eregi('\.\.',$dest_file) || eregi('[<>|]',$dest_file)) + { + dolibarr_syslog("Refused to deliver file ".$dest_file); + return false; + } + return move_uploaded_file($src_file, $file_name); }