当前位置: 首页 > 面试题库 >

就SQL注入而言,哪个SQL查询更安全

容阳焱
2023-03-14
问题内容

我有两个SQL查询,其中每次调用时我都尝试用+1和-1分别更新supopp值。

第一个查询:

    query=update disc set sup=@sup, opp=@opp where did=@did

    int sup=getnoofsup(did);
    int opp = getnoofopp(did);

    com.Parameters.AddWithValue("@sup", sups + 1);
    com.Parameters.AddWithValue("@opp", opps - 1);
    com.Parameters.AddWithValue("@did", did);

    com.ExecuteNonQuery();

第二查询

string query="update disc set sup=sup+1, opp=opp-1 where did=@did" ;
com.Parameters.AddWithValue("@did", did);

com.ExecuteNonQuery();

因为@sup与我交换而在第二次注射查询中有任何威胁sup+1吗?


问题答案:

不,第二个查询与第一个查询一样安全,因为它已完全参数化,因此没有提供外部数据可以通过其输入SQL查询本身文本的路径。该sup+1表达式是由RDBMS计算的,而不是由程序*计算的,因此它不能提供将新代码注入现有SQL的机会。

*,并且随后不会提供给SQL的exec存储过程进行重新解释。



 类似资料:
  • 我想提高对可能存在的SQL注入攻击的了解。我知道参数化完全避免了SQL注入风险,因此应该在任何地方应用。然而,当有人问我如何利用它时,我想得到一个答案。 我知道基本的SQL注入攻击是如何工作的。例如,一个网站有一个页面<代码>网站。com/users/{id}其中id是用户的主键。如果我们完全信任输入,只需将id参数传递给正在执行的查询,这可能会产生可怕的后果。如果是网站。com/users/1查

  • 问题内容: 要在数据库中搜索在任何列“ foo_desc”和“ bar_desc”中同时具有关键字“ foo”和“ bar”的行,我将执行以下操作: 要么 我希望最后一个查询的缺点是性能。 好的一面是,LIKE查询找到了“ MATGA AGAINST”找不到的“ xxfoo”。 哪一个是首选,还是有更好的解决方案? 问题答案: 更新资料 从表开始,表支持。 第一个 要 好得多。在 MyISAM 表

  • 问题内容: 考虑一下我有这行代码 恕我直言,这很容易受到SQL注入的攻击。 因此,我想通过Get / URL发送一个“ var”参数来证明它是可以尝试的,该参数将注入查询,并带有潜在的恶意代码。 我实际上尝试过: 我尝试在执行之前打印出SQL字符串查询,它实际上是2条SQL有效语句。 第一个问题,但实际上似乎mysqli-> query不会一次执行2条语句。是不是 第二个问题,我看到注入查询的一种

  • 问题内容: 我有一个包含三列的表: 还有另一个表,其中包含2列。的列与的相同。 我需要一个查询,它将更新带有的列。 我可以通过检查ID并执行更新语句来通过循环来实现。如何才能通过查询完成? 问题答案: 怎么样

  • 注入技术包括使用应用程序的输入字段注入SQL查询或命令。 Web应用程序SQL注入 成功的SQL注入可以读取,修改数据库中的敏感数据,还可以从数据库中删除数据。它还使黑客能够对数据库执行管理操作,例如:关闭DBMS/删除数据库。 我们通过下面一个简单的图表了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。 威胁代理 - 匿名外部攻击者以及拥有自己帐户的用户可能会尝试从其他人那里窃取帐

  • 我们可以将. sql文件传递或输入到Spring JPA中的查询注释吗? 类似这样的@Query(文件:/sql/employeeList.sql,nativeQuery=true) /sql/employeeList。sql-我想把这个文件放在代码中的某个地方,其中包含select sql。 我不希望有原生sql字符串@查询(“选择abc….”,nativeQuery=true)--我不想这样使