Maison > développement back-end > tutoriel php > Pourquoi ne puis-je pas utiliser les noms de table comme paramètres dans les instructions préparées ?

Pourquoi ne puis-je pas utiliser les noms de table comme paramètres dans les instructions préparées ?

DDD
Libérer: 2024-12-27 12:23:10
original
212 Les gens l'ont consulté

Why Can't I Use Table Names as Parameters in Prepared Statements?

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal