在 SqlCommand 中使用@@TranCount指令时进行 SQL 注入

Sql injection while using @@TranCount instruction in SqlCommand

提问人:Aleksandr Romanov 提问时间:8/11/2022 最后编辑:wohlstadAleksandr Romanov 更新时间:8/11/2022 访问量:83

问:

我有这样的代码:

private DbTransaction sqlTransaction = null;
...
...
...
using (DbCommand command = new SqlCommand("SELECT @@TRANCOUNT"))
{
   if ((int)command.ExecuteScalar() != 0) sqlTransaction.Rollback();
}

问题是我在这部分代码中有一个 sql 注入漏洞(根据 veracode 扫描)。如果我评论这一行(其中包含),漏洞通知已经消失了...... 这段代码有什么问题?为什么可以是sql注入?我应该如何更改此代码以防止漏洞?ExecuteScalar()

C# T-SQL 事务 SQL 注入 SQLC命令

评论

2赞 squillman 8/11/2022
我认为这段代码没有错,Veracode 抛出了一个误报。由于无法修改查询文本,因此无法进行注入。我的猜测是 Veracode 不喜欢@@
0赞 Charlieface 8/12/2022
这段代码肯定有问题,但这不是SQL注入,而是不知道你是否在事务中,需要检查。也许你需要SET XACT_ABORT ON;

答: 暂无答案