Dapper LIKE 查询 MySql 安全防止 Sql 注入
本文关键字:Sql 注入 安全 LIKE 查询 MySql Dapper | 更新日期: 2023-09-27 18:34:01
此查询对 sql 注入与 Dapper 结合使用是否安全?如果没有,在 MySql 下编写它的正确方法是什么?还是有没有更好的版本不使用 concat?
string sql = "SELECT * from user_profile WHERE FirstName LIKE CONCAT("%",@name,"%");"
var result = connection.query<profile>(sql, new {name});
该代码没有问题,但另一种方法是在调用方执行连接,即
const string sql = "SELECT * from user_profile WHERE FirstName LIKE @name;";
var result = connection.Query<Profile>(sql, new {name = "%"+name+"%"});
这是安全的,因为你根本不是在动态构建 SQL。名称只是一个普通参数。实际上,这与Dapper无关。
在这里使用字符串连接是正确的选择。或者,您可以使用SUBSTRING_INDEX
功能。