Donc je me demandais est-ce suffisant pour être sûr que l'utilisateur ne fera pas d'injections SQL et le nombre sera seulement et toujours entier? La fonction $ id dans la fonction getArticle est liée à la requête SQL.Est-ce que (int) et is_int() sont sécurisés pour protéger contre les injections SQL?
<?php $id = (isset($_GET['id']) && is_int((int)$_GET['id'])) ? (int)$_GET['id'] : false ?>
<?php $news = $class->getArticle($id) ?>
Comme loin j'ai testé cela a bien fonctionné, mais comme je ne suis pas totalement sûr je vous demande plutôt guyz! Ok, les gens disent que les déclarations préparées feraient l'affaire. Ils le feraient vraiment? Comme, puis-je être totalement sûr que si bind bind comme entier, il sera entier rien d'autre?
Merci d'avance!
Je pense que le test de 'is_int ((int) [N'IMPORTE QUELLE])' retournera toujours 'true' et est donc redondant. Utilisez 'is_numeric' pour tester si quelque chose ** peut être converti en ** un' int', puis utilisez '(int)' pour effectuer la conversion. Ou laissez la première étape, car (int) va créer un «int» de 0 sur des valeurs non reconnaissables. – MvanGeest
méfiez-vous si votre paramètre $ _GET vient d'un formulaire | bool is_int (mélange $ var) | Trouve si le type de la variable donnée est entier. Remarque: Pour tester si une variable est un nombre ou une chaîne numérique (telle que l'entrée de formulaire, qui est toujours une chaîne), vous devez utiliser is_numeric(). – Redlab