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 :
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.
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.