Sécuriser un formulaire
Par Jonathan Kowalski, lundi 28 mai 2007 à 11:38 :: Technique :: #12 :: rss
htmlspecialchars.En effet prenons l'exemple d'un formulaire tout simple.
Le formulaire
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
Dès lors, la page traitement.php que vous pourriez utiliser ressemblerait à ceci :
la page de traitement
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
Ce n'est absolument pas sécurisé !
En effet l'utilisation du echo permet d'inscrire n'importe quel code HTML et est donc une faille potentielle
Mais comment regler ceci me direz-vous. Sechez donc les gouttes de sueur qui perlent sur votre front, la solution existe !
Il faut et il suffit (pour la plupart des utilisateurs en tout cas) de supprimer tout caractère suspicieux et notamment les "<" et ">".
Ca tombe bien une fonction php s'occupe de faire cela très bien, j'ai nommé : htmlspecialchars.
Ainsi htmlspecialchars va remplacer :
- "&" (et commercial) qui devient "&"
- """ (guillemets doubles) qui devient """ lorsque ENT_NOQUOTES n'est pas utilisée.
- "'" (single quote) qui devient "'" uniquement lorsque ENT_QUOTES est utilisée.
- "<" (inférieur à ) qui devient "<"
- ">" (supérieur à ) qui devient ">"
string htmlspecialchars ( string string [, int quote_style [, string charset]] ).Ne vous inquiètez pas, nous allons détailler quelque peu cette fonction et notamment ses arguments.
Les arguments de htmlspecialchars
- string string Tout simplement la chaîne de caractères que vous voulez traiter.
- int quote_style Ici vous avez le choix entre :
ENT_COMPAT
Constante par défaut, elle convertit les guillemets double et ignore les simples.
ENT_QUOTES
Qui convertit à la fois doubles et simples.
ENT_NOQUOTES
Qui ignore à la fois doubles et simples
- string charset Le dernier argument (optionnel), vous permet de spécifier le jeu de caractères utilisé durant la conversion (par défaut ISO-8859-1)
En définitive, notre page traitement.php ressemblera donc à ça :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
Voilà , plus de caractères dangereux, c'est là un premier pas vers une plus grande sécurisation de vos formulaires, il ne vous plus plus qu'à vous rendre à vos claviers !
Aller plus loin
N'hésitez pas à vous renseigner sur les fonctions htmlentities ou htmlspecialchars_decode qui pourront peut-être aussi vous servir






Commentaires
1. Le mardi 5 juin 2007 à 08:40, par FoW
2. Le mardi 5 juin 2007 à 12:12, par Jonathan
3. Le vendredi 8 juin 2007 à 16:22, par MrBelette
4. Le mardi 19 juin 2007 à 23:10, par lars
5. Le mercredi 20 juin 2007 à 22:52, par Jonathan
Ajouter un commentaire