小编Mar*_*ark的帖子

来自 List<String> 的 FromSqlRaw 参数可以安全地避免 SQL 注入

我遇到一个问题,我需要使用实体框架核心执行原始查询,该核心需要一个字符串列表作为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 注入攻击?

c# entity-framework-core

5
推荐指数
1
解决办法
4806
查看次数

标签 统计

c# ×1

entity-framework-core ×1