¿La consulta Dapper LIKE para MySql safe contra Sql Injection?

c# dapper mysql

Pregunta

¿Es segura esta consulta contra la inyección sql en combinación con Dapper? Si no, ¿cuál sería la forma correcta de escribirlo en MySql? ¿O hay una versión mejor sin usar concat?

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

Respuesta aceptada

Esto es seguro porque no está creando SQL dinámicamente . El nombre es solo un parámetro normal. En realidad, no tiene nada que ver con Dapper.

Usar una cadena concat aquí es la elección correcta. Alternativamente, puede usar la función SUBSTRING_INDEX .


Respuesta experta

No hay un problema con ese código, pero otro enfoque es realizar el concat en la persona que llama, es decir,

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow