Requête Dapper LIKE pour MySQL contre Sql Injection?

c# dapper mysql

Question

Cette requête est-elle sûre contre une injection SQL en combinaison avec Dapper? Sinon, quelle serait la bonne façon de l'écrire sous MySql? Ou existe-t-il une meilleure version sans utiliser concat?

string sql = "SELECT * from user_profile WHERE FirstName LIKE CONCAT("%",@name,"%");"
var result = connection.query<profile>(sql, new {name});

Réponse acceptée

Ceci est sûr car vous ne construisez pas du tout SQL de manière dynamique . Name est juste un paramètre normal. En fait, cela n'a rien à voir avec Dapper.

Utiliser un string concat est le bon choix. Sinon, vous pouvez utiliser la fonction SUBSTRING_INDEX .


Réponse d'expert

Il n'y a pas de problème avec ce code, mais une autre approche consiste à effectuer le concat à l'appelant, c.-à-d.

const string sql = "SELECT * from user_profile WHERE FirstName LIKE @name;";
var result = connection.Query<Profile>(sql, new {name = "%"+name+"%"});



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi