提问人:chris 提问时间:10/9/2020 更新时间:10/9/2020 访问量:209
如何在调用方法中获取CA2100 SQL注入警告
How to get CA2100 SQL injection warning in calling methods
问:
我有一个辅助方法可以防止大量复制和粘贴。我想确保根据规则“CA2100:查看 SQL 查询是否存在安全漏洞”检查我的帮助程序方法“MyExecuteSQLQuery”的调用方法。我怎样才能做到这一点?
换句话说,我想收到类似情况的 CA2100 警告:
MyExecuteSQLQuery("update credentials set password = '" + password +"' where id = " + id);
辅助方法:
public static int MyExecuteSQLQuery(string sql, int timeout = 30)
{
using (MySqlConnection con = new MySqlConnection(DBConnectionstring))
{
con.Open();
using (MySqlCommand cmd = new MySqlCommand(sql, con))
{
if (timeout != 30)
{
cmd.CommandTimeout = timeout;
}
return cmd.ExecuteNonQuery();
}
}
}
答:
1赞
ste-fu
10/9/2020
#1
我不认为这是个好主意。我想可以将您的方法添加到分析器中,但重构您的方法以取而代之可能更容易,也许是这样的:MySqlCommand
public static int MyExecuteSQLQuery(MySqlCommand cmd, int timeout = 30)
{
using (MySqlConnection con = new MySqlConnection(DBConnectionstring))
{
con.Open();
cmd.CommandTimeout = timeout;
return cmd.ExecuteNonQuery();
}
}
}
然后,当您构建MySqlCommand
评论
1赞
chris
10/9/2020
好吧,但这样称呼它更好:using (var sql = new MySqlCommand(“update x set a=1 where b=2”)) MyExecuteSQLQuery(sql);`}MyExecuteSQLQuery("update x set a=1 where b=2"); instead of:
{
评论