Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres

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.

 

Copyright ©2006 Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com