首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SonarQube报告存储过程名称上的SQL注入。

问SonarQube报告存储过程名称上的SQL注入。
EN

Stack Overflow用户
提问于 2018-05-16 15:32:03
回答 1查看 2K关注 0票数 0

我已经开始使用SonarQube进行静态分析。它向我报告了相当多的SQL注入漏洞,但看起来是false positive发现的。

假设需要在数据库上运行过程。过程名取自配置。

SonarQube正在报道:

代码语言:javascript
复制
Make sure to sanitize the parameters of this SQL command.

示例代码:

代码语言:javascript
复制
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注入吗?这个名字需要消毒吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-18 11:38:44

我承认,S3649的实现不是最聪明的,如果您将一个非常数字符串传递给SqlCommand的CommandText属性或相应的ctor参数,则会引起问题。

如果您确信CommandText的值不是来自可能被利用的源(例如,查询字符串参数),那么处理这个特定问题的最佳方法就是在SonarQube中将其标记为Won't Fix。如果您也在此项目中使用连接模式下的SonarLint,它将自动阻止该问题出现在IDE中。

另一方面,如果值可以来自可利用的源,如查询字符串参数、请求体、cookie、标头等,设置CommandType = StoredProcedure仍然不足以阻止攻击者在数据库上执行与您所期望的不同的存储过程.在这种情况下,如果为所拥有的存储过程创建单独的包装器方法,则可能会更好,从而防止潜在攻击者选择要执行的不同SP。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50374872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档