Précédent   Forum du club des développeurs et IT Pro > PHP > Outils
Outils Forum d'entraide sur les outils pour développeurs PHP : EDI, installation, administration... Avant de poster : FAQ outils, toutes les FAQ PHP et les comparatifs
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/11/2012, 21h18   #1
cam022
Invité de passage
 
Inscription : août 2012
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2012
Messages : 4
Points : 0
Points : 0
Par défaut Upload un fichier - Script sécurisé ?

Bonjour,

j'ai lu le tuto sur le site pour faire un système d'upload, mais je n'ai pas vraiment l'impression qu'il soit très sécurisé...
Je trouve les vérifications très simple pouvez vous me dire ce que vous en pensez svp ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
function upload($fichier, $destination, $maxsize=false, $extensions=false)
{
	//Test1: fichier correctement uploadé
	if(!isset($_FILES[$fichier]) || $_FILES[$fichier]['error'] > 0) return false;
	//Test2: taille limite 1mo = 1048576
	if($maxsize !== false && $_FILES[$fichier]['size'] > $maxsize) return false;
	//Test3: extension
	$ext = strtolower(substr(strrchr($_FILES[$fichier]['name'], '.'), 1));
	if($extensions !== false && !in_array($ext, $extensions)) return false;
	//Déplacement
	$nom = BASEPATH."/".$destination."/".sha1(uniqid(rand(), true)).".".$extension_upload;
	return move_uploaded_file($_FILES[$fichier]['tmp_name'], $nom);
}
 
$upload1 = upload('fichier', 'images/upload', 1048576, array('png','gif','jpg','jpeg'));
Je voudrais intégrer ce script sur une page accessible aux membres donc, je veux vraiment le sécurisé avant

Cordialement,
Cam022.
cam022 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 23h35   #2
ABCIWEB
Expert Confirmé
 
Homme Alain
Inscription : septembre 2010
Messages : 1 917
Détails du profil
Informations personnelles :
Nom : Homme Alain
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : septembre 2010
Messages : 1 917
Points : 2 852
Points : 2 852
Il y a cette classe d'upload qui est plus sécurisée concernant le contrôle des images, elle gère beaucoup plus d'erreurs que cette fonction et possède de nombreuses options qu'il est facile de mettre en place en cas de besoin (redimensionnement, nommage et renommage de fichiers, upload multiple etc.).
Il n'y aurait que 4 lignes à écrire pour la configurer dans ton cas.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 09h30   #3
grunk
Modérateur
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 2 497
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 28
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 2 497
Points : 5 208
Points : 5 208
Pour protéger à coup sur un upload d'image il faut retraiter le fichier après l'upload avec GD :

Code :
1
2
$img = imagecreatefrompng('justuploaded.png'); 
imagepng($img, 'safe.png');
Si le code précédent échoue : ce n'était pas une image => on supprimer le fichier potentiellement dangereux.

Une protection par vérification d'extension est inefficace.
Une protection via le type mime fourni par HTTP est contournable
Une protection via le type mime retourné par fileinfo est un premier point intéressant

un peu de lecture : https://www.owasp.org/index.php/Unre...ed_File_Upload
__________________
Pry Framework php5 | Recherche CDI dev. Web sur Dijon et alentours.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 19h15   #4
cam022
Invité de passage
 
Inscription : août 2012
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2012
Messages : 4
Points : 0
Points : 0
Par contre je n'utilise pas seulement les images mais aussi les PDF, .doc, etc...
cam022 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2012, 12h29   #5
ABCIWEB
Expert Confirmé
 
Homme Alain
Inscription : septembre 2010
Messages : 1 917
Détails du profil
Informations personnelles :
Nom : Homme Alain
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : septembre 2010
Messages : 1 917
Points : 2 852
Points : 2 852
Ben alors vérifie au moins l'extension. C'est le minimum.

Un fichier malveillant dont on a changé l'extension est potentiellement dangereux mais normalement pas directement. Cela dit c'est une menace sérieuse.

Si fileinfo fonctionne sur ton serveur, utilises cette fonction. C'est la méthode la plus aboutie actuellement disponible.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h39.


 
 
 
 
Partenaires

Hébergement Web