IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Le filtrage et l'échappement des données en PHP 5 : introduction à la technique du Poka-Yoké

Date de publication : 5 juin 2007


I. Introduction
I-A. Remerciements
I-B. Problématique


I. Introduction


I-A. Remerciements

Je remercie chaleureusement tous ceux qui m'ont aidé lors de la conception de ce framework : pcaboche, Yoshio, wamania et doctorrock, sans oublier Marco Tabini pour avoir fourni l'idée de départ.


I-B. Problématique

Les développeurs font souvent des erreurs tandis qu'un ordinateur n'oublie rien. Ainsi, il est souvent plus fiable de déléguer à l'ordinateur tout ce qui est sensible, plutôt que d'essayer de nous en occuper nous-mêmes.

La méthode du Poka-Yoké nous oblige à éliminer les mauvaises solutions de manière à ne conserver que la bonne.

Le code suivant, aussi simple soit-il, est une faille de sécurité (XSS) :
echo $_GET['test'];
echo $_POST['login'];
En effet, il suffit d'insérer du code Javascript dans le contenu de la variable "test" de l'URI pour obtenir une faille XSS.

Cependant, il existe une solution simple pour résoudre ce problème :
echo htmlentities($_GET['test'], ENT_QUOTES, 'utf-8');
echo htmlentities($_POST['login'], ENT_QUOTES, 'utf-8');
Mais bien sûr, utiliser ce type de code tout au long du script est fastidieux. De plus, nous n'avons aucune garantie contre les oublis du développeur : négliger d'utiliser htmlentities() sur une seule variable donne lieu à une faille XSS...

Une autre solution consiste à déclarer une fonction pour réduire la taille du code à écrire :
function html($string)
{
    return htmlentities($string, ENT_QUOTES, 'utf-8');
}


echo html($_GET['test']);
echo html($_POST['login']);
Chaque ligne est maintenant plus courte à écrire, mais nous n'avons toujours aucune garantie que le développeur utilise systématiquement la fonction html() pour protéger l'internaute d'une faille XSS.

 

Valid XHTML 1.1!Valid CSS!

Copyright © 2006 Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.