我遇到一个问题,我需要使用实体框架核心执行原始查询,该核心需要一个字符串列表作为Where IN 语句的参数,并且我可以让查询正常工作,但我担心 SQL 注入攻击。我的查询将如下所示:
public static string BulkGetColumn3Query
{
get
{
return @"
SELECT Column1, Column2
FROM TABLE
WHERE column3 IN ({0})";
}
}
Run Code Online (Sandbox Code Playgroud)
我现在调用它的方法看起来像这样:
async Task<List<EntityObject>> GetModelObjectByColumn3(List<string> column3Values)
{
var column3ValuesString = string.Join(",", column3Values);
var query = BulkGetColumn3Query.Replace("{0}", column3ValuesString);
return await DbSetObject
.FromSqlRaw(query)
.AsNoTracking()
.ToListAsync();
}
Run Code Online (Sandbox Code Playgroud)
我可以采取什么措施来尝试减轻 SQL 注入攻击?