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

Like子句和sql注入

袁良弼
2023-03-14
问题内容

我对此情况有疑问。

我在存储过程中有这样的查询:

SELECT column1, column2
FROM table1
WHERE column1 like '%' + @column1 + '%'

我的问题是,这容易受到SQL注入的攻击吗?我需要将其更改为以下内容吗?(?)

declare @column1Like nvarchar(200);

@column1Like = '%' + @column1 + '%'

SELECT column1, column2
FROM table1
WHERE column1 like @column1Like

问题答案:

快速的答案是不。为了易于进行SQL注入,必须使用动态SQL执行。

将很容易受到攻击:

EXECUTE ('SELECT column1, column2 FROM table1 WHERE column1 like ' + @column1Like);

这也意味着这两个示例之间没有真正的区别(至少从安全角度而言)。



 类似资料:
  • 本章提供了有关如何使用JDBC应用程序从表中选择记录的示例。 这将在从表中选择记录时使用LIKE子句添加其他条件。 在执行以下示例之前,请确保您具备以下示例 - 要执行以下示例,您可以使用实际用户名和密码替换用户名和密码。 您的MySQL或您正在使用的任何数据库已启动并正在运行。 所需的步骤 (Required Steps) 使用JDBC应用程序创建新数据库需要以下步骤 - Import the

  • 在MariaDB中,当操作需要完全匹配时,子句与语句一起使用来检索数据。它可以与,,和语句一起使用。 它用于模式匹配并返回或。用于比较的模式接受以下通配符: 通配符:匹配字符数(0或更多)。 通配符:匹配单个字符。它匹配其集合中的字符。 语法: 1. 使用%通配符(百分号通配符) 假设我们有一个表,并有以下数据。 现在想要查询那些名字以字母开头的所有学生信息,那么就可以使用条件的通配符来查找所有以

  • 主要内容:语法,实例SQLite 的 LIKE 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。这里有两个通配符与 LIKE 运算符一起使用: 百分号 (%) 下划线 (_) 百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。 语法 % 和 _ 的基本语法如下: 您可以使用 AND 或 O

  • 主要内容:Oracle LIKE运算符介绍,Oracle LIKE示例在本教程中,您将学习如何使用Oracle 运算符来测试列中的值是否与指定的模式匹配。 Oracle LIKE运算符介绍 有时候,想根据指定的模式来查询数据。 例如,您可能希望查找姓氏以开头或姓氏以结尾的联系人。在这种情况下,可使用Oracle 运算符。 Oracle 运算符的语法如下所示: 在上面的语法中, expression - 该表达式是一个列名称或一个表达式,要针对该模式()进行测试。 p

  • 问题内容: 在SQL中,有什么方法可以缩短语法 到 一次又一次地在子句中写入相同的列名是不可行的。 问题答案: 没有没有办法将LIKE与IN 直接 结合 __ 有很多解决方法,例如本例中的SQL Server 这会将多个OR搜索条件更改为行和JOIN 或者,您可以使用UNION将多个查询合并为一个

  • 问题内容: 我在ASP.NET中做一个非常简单的查询,但是在插入该子句后它停止工作。 例子: 如果我删除了LIKE,它将起作用。因此,我认为这与’‘引号有关? 问题答案: sql语句应如下所示: 我不确定我是否完全理解您的评论,但是您似乎想在查询中使用文本框中的值-也许这就是您要尝试执行的操作: “ text_box”将是您的textBox控件的实际ID。