Maison > base de données > tutoriel mysql > Comment puis-je définir en toute sécurité les noms de tables dans les requêtes SQL dynamiques à l'aide de paramètres ?

Comment puis-je définir en toute sécurité les noms de tables dans les requêtes SQL dynamiques à l'aide de paramètres ?

Susan Sarandon
Libérer: 2025-01-11 17:31:42
original
823 Les gens l'ont consulté

How Can I Securely Set Table Names in Dynamic SQL Queries Using Parameters?

Requête SQL dynamique : utiliser des paramètres pour définir les noms de tables

Lors du traitement de requêtes SQL dynamiques, il est généralement nécessaire de définir dynamiquement le nom de la table en fonction des paramètres d'entrée. Bien que la définition de paramètres tels que les ID soit simple, la définition des noms de table peut présenter des défis.

Tentative échouée :

L'approche initiale démontrée dans le code fourni consiste à définir le nom de la table directement dans la chaîne de requête SQL. Cependant, cette approche est vulnérable aux attaques par injection SQL.

Solution utilisant la fonction OBJECT_ID :

Pour garantir la sécurité et éviter les injections SQL malveillantes, il est recommandé d'utiliser la fonction OBJECT_ID pour analyser dynamiquement l'ID d'objet du nom de la table. Ce faisant, les noms de table mal formés ou injectés ne seront pas résolus, évitant ainsi les vulnérabilités de sécurité.

Voici le code mis à jour :

<code class="language-sql">...
SET @TableName = '<[db].><[schema].>tblEmployees'
SET @TableID = OBJECT_ID(@TableName) --如果格式错误/注入,则不会解析。
...
SET @SQLQuery = 'SELECT * FROM ' + QUOTENAME(OBJECT_NAME(@TableID)) + ' WHERE EmployeeID = @EmpID'</code>
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal