Dapper LIKE查询MySql安全对抗Sql注入?

Eps*_*one 10 c# mysql dapper

这个查询是否可以安全地防止与Dapper结合使用sql注入?如果没有,在MySql下编写它的正确方法是什么?或者是否有更好的版本而不使用concat?

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

Mar*_*ell 17

该代码没有问题,但另一种方法是在调用者处执行concat,即

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


usr*_*usr 5

这是安全的,因为您根本不动态构建SQL.名称只是一个普通参数.实际上,它与Dapper无关.

在这里使用字符串连接是正确的选择.或者,您可以使用该SUBSTRING_INDEX功能.