利用instr()函数防止SQL注入攻击

利用instr()函数防止SQL注入攻击,第1张

利用instr()函数防止SQL注入攻击,第2张

我学习asp已经有一段时间了。这几天一直在写自己的程序,遇到了很多问题,不得不考虑一些现在的漏洞,比如‘or和1 = 1’之类的!不管别的,今天我就来说说怎么堵住这个漏洞!

记得看过一篇文章(看的时候不记得了),他用的是instr函数,应该是这样的。

如果instr(Request("id ")," ")> 0或instr(Request("id ")," ' ")> 0,则response.redirect "index.asp "

当然,你也可以在那之后写你想写的!忘了这个吧!

让我们先来学习instr函数:

语法

InStr([start,]string1,string2[,compare])

InStr函数的语法有以下参数:

参数说明
start是可选的。用于设置每次搜索的起始位置的数值表达式。如果省略,搜索将从第一个字符的位置开始。如果start包含Null,将会出现错误。如果指定了compare,则start参数是必需的。
String1是必需的。接受的字符串表达式。
String2
必需。要搜索的字符串表达式。
比较是可选的。一个数值,指示计算子字符串时使用的比较类型。有关数值,请参见“设置”部分。如果省略,将执行二进制比较。
compare参数可以有以下值:
常量值说明
vbBinaryCompare 0执行二进制比较。
vbTextCompare 1执行文本比较。

[返回值]

InStr函数返回以下值:

如果InStr返回

字符串1为零,长度为0

1 string1为Null Null。

2字符串2是零长度开始

2 string2为Null Null。

String2找不到0

在string1中查找string2,查找匹配字符串的位置。

start > Len(string2) 0

以下示例使用InStr搜索字符串:

要在其中进行搜索的字符串。
SearchChar = "P " '搜索“P”。
mypos = instr (4,searchstring,searchchar,1)'文本比较从第四个字符返回6。
mypos = instr (1,searchstring,searchchar,0)'二进制比较从第一个字符返回9。
mypos = instr (searchstring,searchchar)'返回9。
'默认值是二进制比较(最后一个参数被省略)。
mypos = instr (1,searchstring," w ")'二进制比较从第一个字符开始返回0(" w "未找到)。

请注意,InStrB函数使用字符串中包含的字节数据,因此InStrB返回的不是一个字符串在另一个字符串中第一次出现的字符位置,而是字节位置。

总结:instr的作用是:返回一个字符或字符串在另一个字符串中第一次出现的位置。好,让我们看看是哪个代码:

如果instr(Request("id ")," ")> 0或instr(Request("id ")," " ' " > 0,则

含义:比较请求(“id”)中字符(空 case)和字符(')的具体位置(用于二进制比较)。如果找到字符(空 case)和('),那么就是then之后的语句!

现在大家都明白这个意思了!

我第一眼看的时候就说,要是在asp里呢?Id=90加上字符(;或者,)等待某些字符时不是有样本错误吗?(是的,答案是肯定的:)

估计有人会说我给if instr (request ("ID ")," ")> 0或者instr (request ("ID ")," ' " > 0 then语句加一些字符,比如改成:if instr (request ("ID ")," ")> 0或者instr (request ( ) > 0或者instr (request ("ID "),"," > 0 then
等等,后面也可以加,呵呵!(这就好!但是很烂:)
没错,加了这个之后,真的可以让一些所谓的黑客相形见绌!

其实没必要。你忘了instr(Request("id ")," ")> 0这句话了吗?他还用(空 case)来对比!只要有这句话,和1 = 1对那些所谓的黑客来说不就没用了吗?

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 利用instr()函数防止SQL注入攻击

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情