学asp也有
![](/icons/96423yi.gif)
段时间了
![](/icons/96423dou.gif)
这几天
![](/icons/96423yi.gif)
直在写自己
![](/icons/96423de.gif)
![](/icons/96423chengxu.gif)
![](/icons/96423dou.gif)
也遇到了好多问题
![](/icons/96423dou.gif)
我就不得不得考虑到
![](/icons/96423yi.gif)
些现在
![](/icons/96423de.gif)
漏洞
![](/icons/96423dou.gif)
比如
![](/icons/96423dou.gif)
‘ 或 and 1=1等等
![](/icons/96423de.gif)
![](/icons/96423yi.gif)
些漏洞!别
![](/icons/96423de.gif)
先不管
![](/icons/96423dou.gif)
今天我就来说说如何堵这个漏洞!
记得看了
![](/icons/96423yi.gif)
篇文章(不记得什么时候看
![](/icons/96423de.gif)
了)
![](/icons/96423dou.gif)
他用到了instr这个
![](/icons/96423hanshu.gif)
![](/icons/96423dou.gif)
具体
![](/icons/96423de.gif)
应该是这样
![](/icons/96423de.gif)
If instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then response.redirect "index.asp"
当然
![](/icons/96423dou.gif)
也也可以在then后面写你想要
![](/icons/96423de.gif)
!这个先不管!
让我们先来学习instr这个
![](/icons/96423hanshu.gif)
吧:
语法
InStr([start, ]
![](/icons/96423string.gif)
1,
![](/icons/96423string.gif)
2[, compare])
InStr
![](/icons/96423hanshu.gif)
![](/icons/96423de.gif)
语法有以下参数:
参数 描述
start 可选
![](/icons/96423dou2.gif)
数值表达式
![](/icons/96423dou.gif)
用于设置每次搜索
![](/icons/96423de.gif)
开始位置
![](/icons/96423dou2.gif)
如果省略
![](/icons/96423dou.gif)
将从第
![](/icons/96423yi.gif)
个
![](/icons/96423zifu.gif)
![](/icons/96423de.gif)
位置开始搜索
![](/icons/96423dou2.gif)
如果 start 包含 Null
![](/icons/96423dou.gif)
则会出现
![](/icons/96423cuowu.gif)
![](/icons/96423dou2.gif)
如果已指定 compare
![](/icons/96423dou.gif)
则必须要有 start 参数
String1 必选
![](/icons/96423dou2.gif)
接受搜索
![](/icons/96423de.gif)
![](/icons/96423zifu.gif)
串表达式
String2
必选
![](/icons/96423dou2.gif)
要搜索
![](/icons/96423de.gif)
![](/icons/96423zifu.gif)
串表达式
Compare 可选
![](/icons/96423dou2.gif)
指示在计算子
![](/icons/96423zifu.gif)
串时使用
![](/icons/96423de.gif)
比较类型
![](/icons/96423de.gif)
数值
![](/icons/96423dou2.gif)
有关数值
![](/icons/96423dou.gif)
请参阅"设置"部分
![](/icons/96423dou2.gif)
如果省略
![](/icons/96423dou.gif)
将执行 2进制比较
compare 参数可以有以下值:
常数 值 描述
vbBinaryCompare 0 执行 2进制比较
vbTextCompare 1 执行文本比较
[返回值]
InStr
![](/icons/96423hanshu.gif)
返回以下值:
如果 InStr 返回
![](/icons/96423string.gif)
1 为零长度 0
![](/icons/96423string.gif)
1 为 Null Null
![](/icons/96423string.gif)
2 为零长度 start
![](/icons/96423string.gif)
2 为 Null Null
![](/icons/96423string.gif)
2 没有找到 0
在
![](/icons/96423string.gif)
1 中找到
![](/icons/96423string.gif)
2 找到匹配
![](/icons/96423zifu.gif)
串
![](/icons/96423de.gif)
位置
start > Len(
![](/icons/96423string.gif)
2) 0
下面
![](/icons/96423de.gif)
举例利用 InStr 搜索
![](/icons/96423zifu.gif)
串:
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" ' 要在其中搜索
![](/icons/96423de.gif)
![](/icons/96423zifu.gif)
串
SearchChar = "P" ' 搜索 "P"
MyPos = Instr(4, SearchString, SearchChar, 1) '文本比较从第 4个
![](/icons/96423zifu.gif)
开始返回 6
MyPos = Instr(1, SearchString, SearchChar, 0) ' 2进制比较从第1个
![](/icons/96423zifu.gif)
开始返回 9
MyPos = Instr(SearchString, SearchChar) ' 返回 9
' 缺省为 2进制比较(最后
![](/icons/96423yi.gif)
个参数省略)
MyPos = Instr(1, SearchString, "W") ' 2进制比较从第1个
![](/icons/96423zifu.gif)
开始返回 0 (没有找到 "W")
注意 InStrB
![](/icons/96423hanshu.gif)
使用包含在
![](/icons/96423zifu.gif)
串中
![](/icons/96423de.gif)
字节数据
![](/icons/96423dou.gif)
所以 InStrB 返回
![](/icons/96423de.gif)
不是
![](/icons/96423yi.gif)
个
![](/icons/96423zifu.gif)
串在另
![](/icons/96423yi.gif)
个
![](/icons/96423zifu.gif)
串中第
![](/icons/96423yi.gif)
次出现
![](/icons/96423de.gif)
![](/icons/96423zifu.gif)
位置
![](/icons/96423dou.gif)
而是字节位置
整理总结概括:instr
![](/icons/96423de.gif)
功能就是: 返回
![](/icons/96423zifu.gif)
或
![](/icons/96423zifu.gif)
串在另
![](/icons/96423yi.gif)
个
![](/icons/96423zifu.gif)
串中第
![](/icons/96423yi.gif)
次出现
![](/icons/96423de.gif)
位置
![](/icons/96423dou.gif)
好了
![](/icons/96423dou.gif)
让我们在看看哪个代码:
![](/icons/96423if.gif)
instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then
含义:比较
![](/icons/96423zifu.gif)
(空格)和
![](/icons/96423zifu.gif)
(')在request("id")中
![](/icons/96423de.gif)
具体位置(进行 2进制制比较)
![](/icons/96423dou.gif)
假如找到了(空格)和(‘)
![](/icons/96423zifu.gif)
![](/icons/96423dou.gif)
那么就是then 后
![](/icons/96423de.gif)
语句!
现在大家理解这个含义了吧!
当我看第
![](/icons/96423yi.gif)
眼
![](/icons/96423de.gif)
时候我就说
![](/icons/96423dou.gif)
假如在asp?Id=90加上
![](/icons/96423zifu.gif)
(;或,)等等
![](/icons/96423yi.gif)
些
![](/icons/96423zifu.gif)
时不是造样出错吗?(是
![](/icons/96423dou.gif)
回答
![](/icons/96423de.gif)
肯定
![](/icons/96423de.gif)
:)
估计又有人说
![](/icons/96423dou.gif)
那我会在
![](/icons/96423if.gif)
instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then 语句中在加些
![](/icons/96423zifu.gif)
![](/icons/96423dou.gif)
比如改为:
![](/icons/96423if.gif)
instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 or instr(Request("id"),";")>0 or instr(Request("id"),", ")>0 then
等等
![](/icons/96423dou.gif)
你还可以在后面加
![](/icons/96423dou.gif)
呵呵!(这个好啊!不过比较烂:)
是
![](/icons/96423dou.gif)
这样加上后
![](/icons/96423dou.gif)
确实能桃过
![](/icons/96423yi.gif)
些所谓
![](/icons/96423de.gif)
黑客们
![](/icons/96423de.gif)
手
![](/icons/96423de.gif)
!
其实没必要
![](/icons/96423dou.gif)
大家忘了instr(Request("id")," ")>0这句话了吗
![](/icons/96423dou.gif)
他还和(空格)比较了啊!只要有这句话
![](/icons/96423dou.gif)
那些所谓
![](/icons/96423de.gif)
黑客们
![](/icons/96423de.gif)
![](/icons/96423dou.gif)
and 1 = 1 不就没用了吗?
延伸阅读
最新评论