当前位置: 首页 > 知识库问答 >
问题:

Checkmarx:c语言中的二阶SQL注入攻击#

季嘉良
2023-03-14

我如何满足静态代码分析工具(在这种情况下是校验),以下方法没有问题:

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

Checkmarx告诉我:

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

共有1个答案

万俟招
2023-03-14

这样做让马克思感到满意:

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();
    }
 类似资料:
  • 问题内容: 我必须在我的java程序中添加一条语句以更新数据库表: 我听说可以通过SQL注入来利用此漏洞,例如: 我的程序具有Java GUI,并且从中检索所有名称,地址和电子邮件值。我想知道黑客如何将以下代码()添加到我的插入语句中,以及如何防止这种情况发生。 问题答案: 您需要使用PreparedStatement。例如 这样可以防止注入攻击。 黑客将其放入其中的方式是,如果您要插入的字符串来

  • 问题内容: 准备好的语句如何帮助我们防止SQL注入攻击? 维基百科说: 准备好的语句可以抵御SQL注入,因为稍后需要使用其他协议传输的参数值不需要正确地转义。如果原始语句模板不是从外部输入派生的,则不会发生SQL注入。 我不太清楚原因。用简单的英语和一些例子,简单的解释是什么? 问题答案: 这个想法很简单-查询和数据被发送到数据库服务器 分开 。 就这样。 SQL注入问题的根源在于 代码和数据 的

  • 问题内容: 实际上有2个问题: 我知道我必须尽可能多地使用存储过程,但是我想知道以下内容。 答: 我可以从SELECT语句(例如(从MyTable中选择*))获得SQL注入攻击吗? B: 另外,当我在ASP.NET中使用SQLDataSource时,是否可以遭到SQL注入攻击? 问题答案: 回答您的问题。 答: 是的,您可以从任何 接受参数的 查询 中 获得SQL注入攻击(即使您不使用平台使用提供

  • 本文向大家介绍什么是SQL注入式攻击?相关面试题,主要包含被问及什么是SQL注入式攻击?时的应答技巧和注意事项,需要的朋友参考一下 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。常见的SQL

  • 问题内容: 我为客户开发了一个网站,他们将在网上发布商品图片。网址为。有人尝试浏览通知我的产品和错误。 我还收到以下错误报告: 最后三个例子肯定是有人试图进入系统的,对吧? 如果我们将其转换为存储过程,是否会减少或消除插入攻击的风险? 问题答案: 例子:

  • 本文向大家介绍如何防范SQL注入式攻击?相关面试题,主要包含被问及如何防范SQL注入式攻击?时的应答技巧和注意事项,需要的朋友参考一下 好在要防止ASP.NET应用被SQL注入式攻击闯入并不是一件特别困难的事情,只要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式进行。 ⑴ 对于动态构造SQL查询的场合,可以使用下面的技术: 第一:替换单引号,即把