Security: Ajout test pour éviter download fichier hors htdocs
This commit is contained in:
parent
2869d451e6
commit
64e783ab04
@ -1381,13 +1381,14 @@ function dolibarr_print_error($db='',$error='')
|
|||||||
\brief Deplacer les fichiers telechargés, apres quelques controles divers
|
\brief Deplacer les fichiers telechargés, apres quelques controles divers
|
||||||
\param src_file fichier source
|
\param src_file fichier source
|
||||||
\param dest_file fichier de destination
|
\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)
|
function doliMoveFileUpload($src_file, $dest_file)
|
||||||
{
|
{
|
||||||
$file_name = $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
|
// documents dans un rep de la racine web (pas bien), cela permet d'executer
|
||||||
// du code a la demande.
|
// du code a la demande.
|
||||||
if (eregi('\.php|\.pl|\.cgi$',$file_name))
|
if (eregi('\.php|\.pl|\.cgi$',$file_name))
|
||||||
@ -1395,6 +1396,24 @@ function doliMoveFileUpload($src_file, $dest_file)
|
|||||||
$file_name.= '.txt';
|
$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);
|
return move_uploaded_file($src_file, $file_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user