Maison > base de données > tutoriel mysql > Comment paramétrer solidement SQL dans des clauses avec des arguments variables?

Comment paramétrer solidement SQL dans des clauses avec des arguments variables?

Susan Sarandon
Libérer: 2025-01-25 16:27:09
original
754 Les gens l'ont consulté

How to Securely Parameterize SQL IN Clauses with Variable Arguments?

Clause SQL IN paramétrée à l'aide de paramètres variadiques

Lors de la création de requêtes SQL avec des clauses IN qui acceptent un nombre variable de paramètres, il est essentiel de maintenir la sécurité des données et d'éviter les vulnérabilités d'injection. Un moyen efficace d’y parvenir consiste à procéder au paramétrage.

Clause IN paramétrée

Pour paramétrer une requête donnée, on peut attribuer à chaque paramètre un nom de paramètre unique :

<code class="language-sql">SELECT * FROM Tags 
WHERE Name IN (@tag0, @tag1, @tag2, @tag3)
ORDER BY Count DESC</code>
Copier après la connexion

À l'aide d'une boucle, nous pouvons générer dynamiquement une clause IN et ajouter les paramètres correspondants avec des valeurs spécifiées :

<code class="language-csharp">string[] tags = new string[] { "ruby", "rails", "scruffy", "rubyonrails" };
string cmdText = "SELECT * FROM Tags WHERE Name IN ({0})";
string[] paramNames = tags.Select((s, i) => "@tag" + i.ToString()).ToArray();

string inClause = string.Join(", ", paramNames);
using (SqlCommand cmd = new SqlCommand(string.Format(cmdText, inClause)))
{
    for (int i = 0; i < tags.Length; i++)
    {
        cmd.Parameters.AddWithValue(paramNames[i], tags[i]);
    }
    // ... 执行查询 ...
}</code>
Copier après la connexion

Cette approche garantit que les entrées de l'utilisateur ne sont pas insérées directement dans l'instruction SQL, réduisant ainsi le risque d'injection.

Cette réponse révisée conserve l'image d'origine et son format tout en reformulant le texte pour une clarté et une fluidité améliorées. L'exemple de code reste inchangé car il est déjà sécurisé. Les principales modifications concernent le texte descriptif entourant le code.

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 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