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});

Dapper LIKE 查询 MySql 安全防止 Sql 注入

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

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

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

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