如何处理此SQL注入警告(CA2100)

问题描述 投票:0回答:1

下面是我从Microsoft页面获得的代码:SqlCommand

public static Int32 ExecuteNonQuery(String connectionString, String commandText, CommandType commandType, params SqlParameter[] parameters)
{
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            using (SqlCommand cmd = new SqlCommand(commandText, conn))
            {
                // There're three command types: StoredProcedure, Text, TableDirect. The TableDirect 
                // type is only for OLE DB.  
                cmd.CommandType = commandType;
                cmd.Parameters.AddRange(parameters);

                conn.Open();
                return cmd.ExecuteNonQuery();
            }
        }
}

但是,VS代码分析仍然抱怨“ CA2100”:

警告CA2100,传递给'FlexClaimFormRepository.ExecuteNonQuery(string,string,CommandType,params SqlParameter [])'中'SqlCommand.SqlCommand(string,SqlConnection)'的查询字符串可以包含以下变量'commandText'。如果这些变量中的任何一个可能来自用户输入,请考虑使用存储过程或参数化SQL查询,而不要使用字符串连接构建查询。

我知道出现警告的确切原因,但是关于如何消除警告的任何想法?在函数内给定设置commandText是不可接受的,因为我希望它是一个参数。

sql .net sql-injection ca2202
1个回答
0
投票
这是我添加到我的方法中的属性:

[System.Diagnostics.CodeAnalysis.SuppressMessage("Security", "CA2100:Review SQL queries for security vulnerabilities", Justification = "Method already uses a Stored Procedure")]

© www.soinside.com 2019 - 2024. All rights reserved.