【发布时间】:2026-02-13 17:50:01
【问题描述】:
我已经开始使用 SonarQube 进行静态分析。它向我报告了很多 SQL 注入漏洞,但它看起来是 false positive 发现的。
假设需要在数据库上运行过程。过程名称取自配置。
SonarQube 正在报告:
Make sure to sanitize the parameters of this SQL command.
示例代码:
using (SqlCommand cmd = new SqlCommand(procName, Connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@param", SqlDbType.NVarChar, 32)).Value = record;
using (SqlDataReader dr = cmd.ExecuteReader())
{
}
}
可以只在过程名称上进行任何 sql 注入吗?名称需要消毒吗?
【问题讨论】:
-
如果您使用的是命令对象,则过程名称中没有 sql 注入漏洞。这段代码对我来说看起来非常干净和安全。
-
SonarQube 不知道如何填充“procName”。所以它显示了这条消息,但是您可以检查并查看是否没有入口点来使用动态输入对其进行修改,那么可以肯定地说它是误报。
标签: sql-server sonarqube sql-injection .net-4.6