Question

Je crée un assemblage en C # pour MS SQL 2005. Cet assemblage crée une procédure stockée et exécute une requête dynamique en fonction des paramètres transmis à la procédure stockée.

Existe-t-il une fonction simple en C # pour empêcher l’injection SQL?

Par exemple

string myQuery = "SELECT * FROM dbo.MyTable WHERE lastName = '" + injectionCheck(arg1) + "'";

Cette question a reçu une réponse pour la requête standard ... mais dans les situations où il est impossible de créer une requête véritablement dynamique, que puis-je utiliser en C # pour la vérification d'injection?

Par exemple, ceux-ci ne fonctionneront probablement pas:

utilisant @dbName;

SELECT * FROM @table

CLÉ SYMÉTRIQUE OUVERTE @Nom clé

etc

Était-ce utile?

La solution

Utiliser les paramètres liés:

SqlCommand cmd = new SqlCommand(myQuery, conn);
cmd.Parameters.Add("@lastname", SqlDbType.NVarChar, 10, lastName);

Autres conseils

Utiliser les paramètres ....

(Cela a déjà été publié souvent)

string myQuery = "SELECT * FROM myTable WHERE lastname = @p_name";

SqlCommand cmd = new SqlCommand();
cmd.CommandText = myQuery;
cmd.Parameters.Add ("@p_name", SqlDbType.Varchar).Value = "melp";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top