Maison >développement back-end >tutoriel php >Comment puis-je utiliser en toute sécurité les noms de tables dynamiques dans SQL pour empêcher l'injection ?

Comment puis-je utiliser en toute sécurité les noms de tables dynamiques dans SQL pour empêcher l'injection ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-08 12:02:12689parcourir

How Can I Securely Use Dynamic Table Names in SQL to Prevent Injection?

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 :

  • Évitez d'utiliser des noms de tables dynamiques : L'approche optimale consiste à éliminer complètement les noms de tables dynamiques.
  • Restreindre aux valeurs valides : Si les noms de tables dynamiques sont inévitable, comparez-les à une liste prédéfinie de tables autorisées extraite d'une commande SHOW TABLES. Cela garantit que seuls les noms de table valides sont utilisés, minimisant ainsi le risque d'activité malveillante.

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!

Déclaration:
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