Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 搜索中的数据库错误_Search_Asp Classic_Ado - Fatal编程技术网

Search 搜索中的数据库错误

Search 搜索中的数据库错误,search,asp-classic,ado,Search,Asp Classic,Ado,我正在做一个asp网站 当我开始搜索时 像这样的名字o'neil 我得到一个数据库错误 我得到这个错误是因为那个名字里的那个 如何在asp中删除此错误 如果它在asp中,我们可以使用addslashes和stripslashes,但我如何在asp中做到这一点 请帮助无论是用于选择特定字符串值还是用于将其插入数据库,该字符串必须对SQL有效,特别是: 字符串的开头由一个单引号字符标记 作为字符串一部分的任何单引号都必须加倍(以免SQL将其理解为字符串的结尾) 字符串的结尾用单引号标记 所以

我正在做一个asp网站

当我开始搜索时

像这样的名字o'neil

我得到一个数据库错误

我得到这个错误是因为那个名字里的那个

如何在asp中删除此错误

如果它在asp中,我们可以使用addslashes和stripslashes,但我如何在asp中做到这一点


请帮助

无论是用于选择特定字符串值还是用于将其插入数据库,该字符串必须对SQL有效,特别是:

  • 字符串的开头由一个单引号字符标记
  • 作为字符串一部分的任何单引号都必须加倍(以免SQL将其理解为字符串的结尾)
  • 字符串的结尾用单引号标记
所以

  'O''Neil'
是“编码”奥尼尔这个名字的正确方法,因为如果我们使用

  'O'Neil'
相反,SQL会将其视为一个字符串,以字母O开头,但以字母O结尾。这个单字母字符串后面是SQL无法理解的表达式
Neil'


上述信息将允许您存储姓名,并以保留姓名中嵌入的单引号的方式查询姓名,就像爱尔兰O'xxxx一样。
除了帮你解决这个问题外,如果我忘了提及风险,那我就是失职了

现在您已经了解了非双引号将终止字符串,您可以看到恶意用户如何使用它来“欺骗”应用程序。
例如,假设用户不知何故猜测正在使用的表是
search
,他/她可能会继续并在应用程序的编辑框中填写以下字符串

  O'; DELETE FROM search where 'a%'='a
您的逻辑将使用以下字符串

Lstart="O'; DELETE FROM search where 'a%'='a"; select * from search where lname like '%Lstart%'
-- which effectively will be substituted as
select * from search where lname like '%O';  DELETE FROM search where 'a%'='a%'
如果与基础SQL连接关联的帐户被授权,则将导致从表中删除所有行,并使应用程序中断


通过系统地将单引号加倍,并采取一些其他预防措施,例如使用参数化查询,可以保护应用程序(及其数据库)免受此类攻击。

是的,您可能需要详细了解如何在它们到达数据库之前将其转义。对不起,我没有正确地理解您。这是一个网站用户将键入的名称,例如d'souzau能否准确地在asp中为我提供该查询这是我的查询Lstart=“O'neil”;从像“%Lstart%”@tibin mathew这样的lname所在的搜索中选择*这将是
Lstart=“O”“neil”;从搜索中选择*,其中lname类似于“%Lstart%”
,即只需在O in O'neil后面添加一个额外的单引号。@tibin:在本主题中,请阅读我关于SQL注入的编辑。