Prévention de l'injection SQL avec des noms de tables dynamiques
En réponse à une discussion sur la prévention de l'injection SQL, il a été suggéré d'utiliser PDO ou mysql_real_escape_string est inefficace pour sauvegarder les noms de tables dynamiques. Cependant, une analyse plus approfondie révèle la validité de ces suggestions dans des circonstances spécifiques.
Limitation de mysql_real_escape_string
Bien que mysql_real_escape_string échappe efficacement aux données de chaîne entre guillemets, il échoue lorsqu'il s'agit de dynamique noms de tables. La fonction d'échappement cible uniquement les caractères entre guillemets, laissant le caractère backtick inchangé. Cet oubli crée une faille permettant aux attaquants d'exécuter une injection SQL en incorporant un backtick de fermeture dans leur entrée.
Limitation PDO
De la même manière que mysql_real_escape_string, PDO ne fournit pas de protection directe. contre l'injection SQL impliquant des noms de tables dynamiques.
Recommandé Approche
Pour atténuer le risque d'injection SQL lors de l'utilisation de noms de tables dynamiques, il est fortement conseillé d'adopter des stratégies alternatives :
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!