emploi informatiqueemploi informatique> Créez votre compte
Déposez votre CV informatique
JEUDIS
Mag'
 
ACCUEIL
 
ACTUALITÉS
 
FICHES
MÉTIERS
 
LE DROIT
DU TRAVAIL
 
TOP
ENTREPRISES
 
CHAT
 
PORTAILS
THEMATIQUES
 

Les problèmes de sécurité avec PHP


Si votre site web utilise PHP et éventuellement une base de données MySQL alors vous devez connaître les principales failles de sécurité de PHP comme l'injection SQL, les failles XSS, les failles d'include, les failles de sessions et les failles d'upload.

Lorsque vous codez un site web en PHP ou autre, vous devez être conscient des failles de sécurité qui existent. Une faille de sécurité est une vulnérabilité dans votre
code qui permet à un pirate informatique d'exécuter des commandes qu'il n'est pas censé pouvoir effectuer. Par exemple, un pirate peut via une faille de sécurité sur votre site s'identifier sur votre site web et récupérer des informations personnelles sur vos utilisateurs, détruire votre site web ou encore utiliser l'espace disque de votre site web comme espace de stockage pour des fichiers illégaux. C'est pour toutes ces raisons que nous allons apprendre à nous protéger contre ces failles de sécurité en PHP. Cet article sera divisé en cinq parties correspondant aux cinq types de faille que nous allons découvrir : les failles d'upload, les failles d'include, l'injection SQL en PHP, les failles XSS (CSS) et les failles de sessions.


Les failles d'upload ?

Pour votre site web il peut être utile de créer un formulaire permettant à vos visiteurs d'uploader par exemple des images pour leurs avatars.
Cependant l'upload de fichiers par des visiteurs est risqué si on ne respecte pas quelques règles.

Une fois votre

en place avec une method="POST", vous pouvez récupérer diverses diverses informations sur le fichier que vous souhaitez uploader :

• Le nom : $_FILES['avatar']['name'],

• Le chemin du fichier temporaire :$_FILES['avatar']['tmp_name'],

• La taille (peu fiable, dépend du navigateur) :$_FILES['avatar']['size'],

• Le type MIME (peu fiable, dépend du navigateur)

: $_FILES['avatar']['type'],

• Un code d'erreur si besoin : $_FILES['avatar']['error'].

Ces variables nous seront très utiles pour effectuer nos tests.

Maintenant que le sujet est introduit, nous allons voir les problèmes que posent les formulaires d'upload. Par exemple, si vous ne contrôlez pas l'extension du fichier uploadé, le visiteur peut très bien envoyer un fichier .php ou autre permettant de récupérer des informations sensibles sur votre serveur. Pour cela, nous allons appliquer une simple condition couplée à la fonction strrchr (cette fonction permet de récupérer l'extension d'un fichier, comme par exemple .gif) permettant de vérifier si le fichier uploadé a bien l'extension .jpeg, .jpg, .gif ou .png ou autre que vous aurez spécifié dans un tableau. Vous devez également vérifier que le nom du fichier ne contienne pas de caractères spéciaux. Un visiteur mal intentionné ayant uploadé une image avec un nom du type essai.php/0.png, pourrait via les fonctions fopen, fwrite et fclose exécuter du code php au travers de l'image.

Pour cela, on va utiliser les expressions régulières couplées à la fonctions preg_match pour vérifier que le nom du fichier ne contient pas de caractères spéciaux, de backslash et de slash. Le Listing 1 vous montre comment sécuriser votre code.
Deuxième problème avec l'upload de fichiers en php, la taille du fichier. Même si une taille maximale est spécifiée dans le php.ini pour éviter tout problème sur le serveur, il est préférable de vérifier si la taille du fichier est acceptable pour notre script. Pour cela, on utilise la variable $_FILES['fichier']['tmp_name'] que l'on passe en paramètre à la fonction filesize() pour récupérer la taille du fichier que le visiteur souhaite uploader. On déclare ensuite une variable contenant la taille maximale acceptée (en octets) et on la compare à filesize($_FILES['fichier']['tmp_name']). Si la variable est inférieure au résultat de la fonction alors on peut continuer le script (Listing 2).

Une fois ces deux tests effectués, vous pouvez utiliser la fonction move_uploaded_file pour déplacer le fichier du visiteur dans le répertoire spécifié en paramètre.


Lire la suite de l'article sur PhpSolMag

PHP Solutions est un magazine international pour tous ceux qui s'intéressent à la programmation en PHP et à la création d'applications Web. C'est le seul magazine consacré entièrement au language PHP sur le marché français. Nous décrivons des technologies les plus récentes, des projets complets et des problèmes de programmeurs.

Il est lu par les professionnels utilisants les technologies PHP et par d'autres utilisateurs, qui s'intéressent aux solutions internet.

PHP Solutions collabore avec les meilleurs spécialistes expérimentés dans la programmation et développement des applications web.

Chaque numéro du magazine est accompagné d'un cédérom sur lequel vous trouverez les programmes utiles, utilitaires et bibliothèques liés aux articles présentés dans le magazine, et en plus, la documentation appropriée.

 

 



Dernière mise à jour: 26/10/2009 - 11:14 AM