Impossible de paramétrer les noms de table dans les instructions préparées
Malgré vos tentatives initiales pour séparer les variables pour vous protéger contre l'injection SQL, vous avez rencontré erreurs. Le problème vient de la tentative d'inclure le nom de la table en tant que paramètre.
Dans une instruction préparée, le paramétrage est limité aux valeurs contenues dans l'instruction SQL. Le nom de la table, qui détermine la validité de l'instruction et les noms de colonnes, ne peut pas être substitué dynamiquement.
Même dans des interfaces comme PDO, qui simulent des instructions préparées, la substitution du nom de la table sous forme de chaîne entre guillemets conduit à une syntaxe SQL invalide.
Pour éviter la vulnérabilité par injection, il est préférable de conserver une liste blanche de noms de tables acceptables et de valider votre $mytable par rapport à cela. Un code comme "SELECT * FROM {$mytable}" reste une option viable, à condition de garantir la validité de $mytable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!