Bonjour,

Je voulais savoir votre avis de la méthode que j'utilise pour uploder des fichiers vers un site PHP

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
$MAXIMUM_FILESIZE = 5 * 1024 * 1024; //  5MB maximum file size 
$rationnelleExpression_FileTypes ="/^\.(jpg|jpeg|gif|png|bmp|doc|docx|txt|rtf|pdf|xls|xlsx|ppt|pptx){1}$/i";//  Valid file extensions (images, word, excel, powerpoint)
$uploadDir = 'pieces_jointes/';
 
$msg = '';
$err = false;
//-------------------------------------------------------------
if((!$err) and (!isset($_FILES['userfile'])) ) 
{
  $msg = "Attaque par personalisation de page web";
  $err = true;  
}
//-------------------------------------------------------------
if(!$err and $_FILES['userfile']['name']=='')
{
  $msg = 'Champ obligatoire';
  $err = true;
}
//-------------------------------------------------------------
if(!$err and preg_match($rationnelleExpression_FileTypes, strrchr($_FILES['userfile']['name'], '.')) == 0 )
{
  $msg = 'Format de fichier invalid';
  $err = true;
}
//-------------------------------------------------------------
if( !$err and (($_FILES['userfile']['error']==1) or ($_FILES['userfile']['error']==2) or ($_FILES['userfile']['size'] > $MAXIMUM_FILESIZE)) )
{
  $msg = 'Dépassement de la taille maximale';  
  $err = true;
}
//-------------------------------------------------------------
if( !$err and $_FILES['userfile']['error'] != 0 )
{
  $msg = 'Erreur lors de téléchargement de fichier';
  $err = true;
}
//-------------------------------------------------------------
if(!$err and !is_uploaded_file($_FILES['userfile']['tmp_name']))
{
  $msg = 'Erreur lors de téléchargement de fichier';
  $err = true;
}
//-------------------------------------------------------------
if(!$err )
{
  $safe_filename = generate_new_file_name($_FILES['userfile']['name']);
 
  if(move_uploaded_file ($_FILES['userfile']['tmp_name'],$uploadDir.$safe_filename))
  {
    $msg = 'Le fichier a été téléchargé avec succès';
  }
  else
  {
    $msg = 'Erreur lors de téléchargement de fichier';
  }
}
//--------------------AFFICHAGE DU RESULTAT--------------------
echo $msg;
//-------------------------------------------------------------

Ma question est est-ce que cette méthode est sécurisée ou elle contient des failles de sécurité