anti injection et nombres

Eléphant du PHP | 259 Messages

29 juil. 2007, 11:17

Bonjour

j'aurais besoin de votre avis
je me penche beaucoup sur la sécurité de mon site et je voulais savoir si, pour protéger mon site contre les injections sql, vous feriez comme moi :

pour les variable qui doivent etre des nombres dans mon schéma de données, pour empécher une injection, ce que je fais c'est que je le force en int :
$var=$_POST['var'];
$var=(int)$var
pensez vous que c'est une bonne méthode ?

merci
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

ViPHP
ViPHP | 4674 Messages

29 juil. 2007, 11:33

Bonjour,

le casting (transtypage dans la langue de Molière) est évidement l'une des meilleures méthodes pour se protéger. Si tu veux travailler sur des entiers, tu peux appliquer une expression régulière pour enlever tout ce qui n'est pas des chiffres, mais ce serait un filtre. Si tu ne veux pas filtrer, mais forcer le typage, alors faire un cast me paraît le plus conseiller.

Pour des économies d'écritures, tu peux faire :
$var = (int) $_POST['var'];
Il faut voir en fonction des cas. Si tu veux une chaîne de caractères, faire un cast (string) sur une chaîne ne va pas sécuriser grand chose. Et il faut voir si tu veux filtrer ou non. Mais le cast reste de loin la meilleure méthode amha.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 259 Messages

29 juil. 2007, 11:34

d'accord

merci bien
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

29 juil. 2007, 11:49

Mmh, puisque tu es sous 5.2, pourquoi ne pas utilser l'extension dédiée au filtrage ?