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

时间:2012-05-12 10:53:02

标签: 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});

2 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分:5)

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

在这里使用字符串连接是正确的选择。或者,您可以使用SUBSTRING_INDEX函数。