SAT SQL dans la clause, traitez les paramètres variables
Pour empêcher SQL d'injecter des vulnérabilités, le paramétrage contenant SQL dans la clause In est crucial. Cependant, lors du traitement des paramètres de quantité variable, cela peut se compliquer. Ce qui suit est la méthode de résolution de ce problème dans SQL Server 2008:
Utiliser le paramétrage C # Chaque paramètre, vous pouvez utiliser les méthodes suivantes:
Ce code crée un paramétré dans les classes qui contiennent un nombre spécifié de paramètres. Le résultat est:
<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>
cmd.CommandText = "SELECT * FROM Tags WHERE Name IN (@tag0, @tag1, @tag2, @tag3)"
cmd.Parameters["@tag0"] = "ruby"
cmd.Parameters["@tag1"] = "rails"
cmd.Parameters["@tag2"] = "scruffy"
Bien que le plan de requête de cache puisse être bénéfique, ils ne peuvent pas toujours fournir des avantages significatifs pour une question simple comme celle-ci. Cependant, en commençant par la version SQL Server 7, SQL Server interroge automatiquement, mettant en évidence l'importance de la paramétrage pour la sécurité.
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!