Différences
Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
codeur:securite [2007/03/21 23:33] developpeur créée |
codeur:securite [2007/03/21 23:59] (Version actuelle) developpeur |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== La Sécurité ====== | ====== La Sécurité ====== | ||
Cette page recense les méthodes, fonctions et principes de la sécurité de NPDS. | Cette page recense les méthodes, fonctions et principes de la sécurité de NPDS. | ||
+ | |||
+ | ===== Initalisez vos variables ===== | ||
+ | Un principe simple est de toujours initialiser vos variables locales. | ||
+ | |||
+ | $tmp=""; | ||
+ | $tmp=false; | ||
+ | $tmp=0; | ||
+ | |||
+ | Ca ne prend que peut de temps et cela évite que ces variables contiennent autre choses que ce que vous avez voulu y mettre ... | ||
+ | |||
+ | ===== Le bon type de variable ===== | ||
+ | Un autre principe simple est de toujours considérer que le type de variable provenant d'une URL, d'un formulaire, d'un cookie ou d'une session, ... n'est pas fiable. | ||
+ | |||
+ | Une précaution élémentaire : l'utilisation de la fonction settype | ||
+ | |||
+ | Par exemple : settype($tmp, "integer"); Si vous attendez un entier, cette fonction php va vous garantir que c'est bien un entier que vous obtiendrez. L'avantage : si il avait autre chose dans la variable $tmp settype tranforme le contenu afin de respecter le type. | ||
+ | |||
+ | $tmp="je suis un code malicieu"; | ||
+ | settype($tmp, "integer"); | ||
+ | echo $tmp; | ||
+ | |||
+ | Abuser absolument de cette fonction ! | ||
+ | |||
+ | ===== Le bon type de variable II ===== | ||
+ | Utiliser la fonction settype sur une chaine de caractère n'a pas vraiment de sens / Par contre PHP dispose de nombreuses fonctions permettant de faire le ménage (enfin au moins une partie) dans les variables | ||
+ | |||
+ | stripslashes( | ||
+ | htmlspecialchars( | ||
+ | urldecode( | ||
+ | |||
+ | |||
+ | ===== RemoveHack ===== | ||
+ | Removehack assure a elle seule une partie significative de la sécurité de NPDS. | ||
+ | |||
+ | Son objectif est de filtrer la chaine de caractére que vous lui passer afin d'en modifier tout code malicieux (javascript notament) et donc de permettre à NPDS de supporter le HTML sans trop de risque | ||
+ | |||
+ | Syntaxe I : $tmp=removehack($chaine); | ||
+ | |||
+ | Syntaxe II : $query = removeHack(stripslashes(htmlspecialchars(urldecode($query),ENT_QUOTES))); | ||
+ | |||
+ | RemoveHack doit être utilisée sur tous les champs de formulaire (au retour du Submit), sur toute les variables passées par les URL |