1

我如何满足静态代码分析工具(在本例中为 checkmarx)以下方法没有问题:

public OdbcDataReader ExecuteQuery(string sql)
{
   var cmd = new OdbcCommand(sql, connection);
   return cmd.ExecuteReader();
}

Checkmarx 告诉我以下内容:

方法 ExecuteQuery 从 ExecuteReader 元素获取数据库数据。然后,该元素的值在未经过适当清理或验证的情况下流经代码,并最终在方法 ExecuteQuery 中用于数据库查询。这可能会启用二阶 SQL 注入攻击。

4

1 回答 1

0

这样做使 CheckMarx 满意:

public OdbcDataReader ExecuteQuery(string sql)
{
    var cmd = new OdbcCommand(sql.Replace("'", ""), connection);
    return cmd.ExecuteReader();
}

有趣的是,我自己扫描了该方法,使用命令并不能满足它:

public OdbcDataReader ExecuteQuery(string sql)
    {
        OdbcCommand cmd = connection.CreateCommand();
        cmd.CommandText = sql;
        return cmd.ExecuteReader();
    }
于 2017-01-11T19:42:34.870 回答