MySQLの大量のLIKEクエリはSql Injectionに対して安全ですか?

c# dapper mysql

質問

このクエリは、Dapperと組み合わせてSQLインジェクションに対して安全ですか?もしそうでなければ、MySqlの下でそれを書く正しい方法は何でしょうか?または、コンカットを使用しないでより良いバージョンがありますか?

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

受け入れられた回答

SQLを動的に構築しているわけでないので、これは安全です。名前は単なる通常のパラメータです。実際、Dapperとは何の関係もありません。

ここで文字列コンカットを使用するのが正しい選択です。あるいは、 SUBSTRING_INDEX関数を使用することもできます。


エキスパート回答

そのコードには問題はありませんが、別のアプローチは呼び出し側でconcatを実行することです。

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


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow