【问题标题】:Single Quote Error单引号错误
【发布时间】:2010-12-08 12:15:55
【问题描述】:

当我在搜索框中插入单引号并按下搜索按钮时,会出现如下错误:

[微软][SQL Server Native Client 10.0][SQL Server]字符串' '后面的非右引号。

【问题讨论】:

  • 参数化你的SQL!这是一个明确的迹象,表明您的应用程序容易受到 SQL 注入的攻击。你在用什么? C#?
  • 尝试搜索:';drop table users;--

标签: sql sql-server


【解决方案1】:

您应该使用parameterized queries,而不是通过连接来构造您的SQL。

这将避免SQL Injection attacks 并解决任何单引号问题。

快速修复它以通过加倍 ('') 来逃避 ',但这只是一种临时解决方法,您的代码仍然容易受到攻击。

【讨论】:

    【解决方案2】:

    参数化您的 SQL 查询。还有比这更严重的问题,称为SQL Injection

    【讨论】:

      【解决方案3】:

      您需要转义单引号,例如 \',因为您使用单引号包围 where 语句,例如 where i = 'foo',然后您需要编写 where i = '\'' 以匹配单个引用,或躺在哪里 i = '今天是个好日子'

      【讨论】:

      • 我同意 Oded,如果可以的话,使用准备好的/参数化的查询
      • 在 SQL Server 中,引号无论如何都不会以这种方式转义。
      • 用斜杠转义单引号是不正确的:\ 因为 SQL 服务器用单引号转义引号:',就像@Oded 在他的回答中所说:stackoverflow.com/questions/4387300/single-quote-error/…,我也没有' t 否决你(你肯定会得到一些)
      猜你喜欢
      • 2017-03-29
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      相关资源
      最近更新 更多