Maison > base de données > tutoriel mysql > Comment puis-je créer en toute sécurité des connexions SQL dynamiques à l'aide de procédures stockées ?

Comment puis-je créer en toute sécurité des connexions SQL dynamiques à l'aide de procédures stockées ?

Mary-Kate Olsen
Libérer: 2024-12-17 02:14:25
original
682 Les gens l'ont consulté

How Can I Securely Create Dynamic SQL Logins Using Stored Procedures?

Création de connexions SQL dynamiques

Les développeurs rencontrent souvent des difficultés lorsqu'ils tentent de créer des connexions SQL dynamiques à l'aide de procédures stockées. Pour résoudre ce problème courant, cet article montre comment créer des connexions dynamiques à l'aide d'une approche simple et sécurisée.

Énoncé du problème

Un développeur nommé Justin a demandé de l'aide pour créer une procédure stockée qui pourrait à la fois créer un locataire dans une base de données SaaS et lui accorder l'accès à un rôle prédéfini. Cependant, il a rencontré une erreur lors de la tentative de création de la connexion :

"CREATE LOGIN @username WITH PASSWORD = @password"

SQL Manager a renvoyé les erreurs suivantes :

  • "Syntaxe incorrecte près de '@username'."
  • "Syntaxe incorrecte près du mot-clé 'with'. Si cela Si l'instruction est une expression de table courante, une clause d'espaces de noms XML ou une clause de contexte de suivi des modifications, l'instruction précédente doit se terminer par un point-virgule."

Réponse

La clé pour résoudre ce problème réside dans la compréhension que CREATE LOGIN n'accepte que des valeurs littérales pour le nom d'utilisateur. Pour résoudre ce problème, il est nécessaire de construire l'instruction de création de connexion de manière dynamique.

Le code suivant démontre une approche sûre :

DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + quotename(@username) + ' WITH PASSWORD = ' + quotename(@password, '''');
EXEC(@sql)
Copier après la connexion

Cette approche enveloppe le nom d'utilisateur et le mot de passe littéraux entre guillemets pour éviter Attaques par injection SQL. En utilisant une instruction SQL dynamique et en gérant soigneusement les valeurs des paramètres, il devient possible de créer des connexions SQL de manière dynamique à l'aide de procédures stockées.

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