1. Introduction à la fonction IS_NUMIC
Certains programmes CMS nationaux ont utilisé la fonction IS_NUMIC.
bool is_numeric (mixte $ var)
Renvoie True si var est un numérique et une chaîne numérique, sinon renvoie false.
2. La fonction est-elle sûre?
Ensuite, jetons un coup d'œil à un exemple pour illustrer si cette fonction est sûre.
La copie de code est la suivante: $ s = is_numeric ($ _ get ['s'])? $ _ Get ['s']: 0;
$ sql = "Insérer dans les valeurs de test (type) ($ s);";
mysql_query ($ sql);
Le programme de fragments ci-dessus détermine si les paramètres sont un nombre et renvoie un nombre si ce n'est pas le cas, renvoie 0, puis l'apporte dans la requête de la base de données. (De cette façon, les instructions SQL ne peuvent pas être construites)
Nous convertissons «1 ou 1» en hexadécimal 0x31206f722031 comme valeur du paramètre S
Une fois le programme exécuté, nous interrogeons la base de données à voir, comme indiqué dans la figure ci-dessous:
Si vous remettez les champs de ce tableau et ne filtrez pas et n'apportez pas une autre déclaration SQL, cela provoquera 2 injections.
3. Résumé
Essayez de ne pas utiliser cette fonction. 1 ou 1 n'apparaîtra pas.