Comment se protéger contre l'injection SQL avec des noms de table dynamiques
Comme souligné dans une discussion récente, s'appuyer sur PDO ou mysql_real_escape_string pour empêcher l'injection SQL avec des noms de table dynamiques est inefficace. Contrairement à l'affirmation selon laquelle ces mesures sont « de très mauvaise qualité », il est crucial de comprendre pourquoi elles ne fonctionnent pas pour une sécurité robuste.
Les limitations de mysql_real_escape_string
mysql_real_escape_string est conçu pour échapper données de chaîne entre guillemets. Il ne parvient pas à gérer les noms de tables dynamiques car il n'échappe pas au caractère backtick (`). Cela pose une vulnérabilité de sécurité, car l'injection peut être réalisée en terminant simplement la chaîne par un backtick.
Manque de support de PDO
PDO ne fournit pas non plus d'assainissement pour les dynamiques noms de tables. Cela vient du fait qu'il considère les noms de tables comme des identifiants, dont il n'échappe pas automatiquement.
Bonnes pratiques
Pour atténuer ces risques, il convient d'éviter en utilisant des noms de table dynamiques autant que possible. Cependant, s'ils sont inévitables, envisagez les mesures suivantes :
En incorporant ces techniques dans les pratiques de développement, les développeurs peuvent prévenir efficacement les attaques par injection SQL qui exploitent les noms de table dynamiques.
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!