21-11-2008, 03:57 PM
Plume a écrit :Même sans framework, tu peux pas faire ça chez moi. J'aurai -comme tout le monde ici présent- plutôt tendance à faire ça :
Code PHP :<?php
$id = '0; DROP TABLE table';
$intId = mysql_real_escape_string($id);
'SELECT * FROM table WHERE id = ' . $intId . ';';
Et donc, typage ou pas, j'm'en fous, ça passe pas.
P.
Heu... Si, ça passe. Voir la doc : la fonction mysql_real_escape_string ne met un \ que devant quelques caractères précis : NULL, \x00, \n, \r, \, ', " et \x1a.
C'est à dire : le caractère NULL, le caractère de code ascii 0, les deux types de retours à la ligne, les \, les deux types de guillemets, et le caractère de code ascii 26, c'est à dire le retour arrière.
Cette fonction ne te protegerais donc absoluement pas dans le cas présent. Et ta table serait donc droppée ; c'est précisément dans ce genre de cas que le typage est important et que vérifier qu'on a un entier est primordial.