如何解决“潜在SQL注入”风险?

How to resolve "Potential SQL Injection" risk?

提问人:navigator 提问时间:11/9/2022 更新时间:11/9/2022 访问量:50

问:

我正在使用 Visual Code Grepper 来分析我们的代码。在代码中的几乎每个 SQL 语句中,它都表示存在“SQL 注入”风险。甚至是传递参数的代码行。

请看下面的这个例子:

严重:潜在不安全代码 - 潜在 SQL 注入行:804 D:\Source\XXX\App_Code\Reports\QueryClass.cs 应用程序似乎允许通过预先准备好的动态 SQL 语句进行 SQL 注入。

ExecuteSQL("Update QueryParam Set Value=@VA,UpdatedBy=@UB,Updated=GetUTCDate() Where ParamID=@PID", DAL.SQLType.sqlNQ,无,“@VA,@UB,@PID”,值,User.UserID, 参数 ID);

当值在参数中传递时,这有什么风险?

如何解决这些“风险”?

SQL 安全 SQL注入 静态分析

评论

0赞 Jeroen Mostert 11/9/2022
虽然我不知道分析器是如何工作的,但我也会怀疑这段代码,因为它如何将参数名称列表作为逗号分隔的字符串传递,而不是(或者根本不传递,因为参数名称可以相当安全地从语句中派生)。首先要考虑的可能是,这种方法是否真的添加了任何东西,而不是使用像 Dapper 这样的专用微型 ORM。如果做不到这一点,则必须查看是否有某种方法可以注释该方法,以便分析器在使用字符串文字调用时专门将其识别为安全。string[]ExecuteSQL
0赞 Serg 11/9/2022
看起来该工具只是检测并且不分析表示查询文本的字符串表达式。当然,一个人可能会建立一个危险的表情。ExecuteSQL

答: 暂无答案