Donn�es transmises par les internautes

Les plus grandes faiblesses de nombreux programmes PHP ne viennent pas du langage lui-m�me, mais de son utilisation en omettant les caract�ristiques de s�curit�. Pour cette raison, vous devez toujours prendre le temps de prendre en compte les implications d'une fonction, et de cerner toutes les applications d'une utilisation exotiques des param�tres.

Exemple #1 Utilisation dangereuse de variables

<?php
// efface un fichier � la racine d'un utilisateur... ou peut �tre
// de quelqu'un d'autre?
unlink($evil_var);
// Note l'acc�s de ce fichier ... ou pas?
fputs($fp$evil_var);
// Ex�cute une commande triviale... ou ajoute une entr�e dans /etc/password ?
system($evil_var);
exec($evil_var);
?>

Il est vivement recommand� d'examiner minutieusement votre code pour vous assurer qu'il n'y a pas de variables envoy�es par le client web, et qui ne sont pas suffisamment v�rifi�es avant utilisation.

  • Est-ce que ce script n'affectera que les fichiers pr�vus?
  • Est-il possible que des valeurs incoh�rentes soient exploit�es ici?
  • Est-ce que ce script peut �tre utilis� dans un but diff�rent?
  • Est-ce que ce script peut �tre utilis� malicieusement, en conjonction avec d'autres?
  • Est-ce que toutes les actions seront not�es?

En r�pondant de mani�re ad�quate � ces questions lors de l'�criture de vos scripts (plut�t qu'apr�s), vous �viterez une r��criture inopportune pour raison de s�curit�. En commen�ant vos projets avec ces recommandations en t�te, vous ne garantirez pas la s�curit� de votre syst�me, mais vous contribuerez � l'am�liorer.

Vous pouvez aussi envisager de supprimer l'acquisition automatique des variables d'environnement, les guillemets magiques (magic_quotes), ou encore toute option qui pourrait vous conduire � vous tromper sur la validit�, la source ou la valeur d'une variable. En travaillant avec error_reporting(E_ALL), vous pouvez �tre averti que certaines variables sont utilis�es avant d'�tre exploit�es, ou v�rifi�es (et donc, vous pourrez traiter des valeurs exotiques � la source).