高效过滤器技术参数:对instr在asp中过滤多余参数的看法来源: 发布时间:星期六, 2009年9月12日 浏览:9次 评论:0
来源:邪恶 8进制 [E.S.T] 作者:sunlion
先不管来砍两句先呵呵!学asp也有段时间了这几天直在写自己文章也遇到了好多问题些到写参数我就不得不得考虑到些现在漏洞比喻‘ 或 and 1=1等等些漏洞!别先不管今天我就来说说这个漏洞! 记得看了篇文章(不记得什么时候看了:(他用到了instr这个具体应该是这样 If instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then response.redirect "index.asp"当然也也可以在then后面写你想要!这个先不管! 让我们先来学习instr这个吧: 语法 InStr([start, ]1, 2[, compare]) InStr 语法有以下参数: [参数 描述] start 可选数值表达式用于设置每次搜索开始位置如果省略将从第个位置开始搜索如果 start 包含 Null则会出现如果已指定 compare则必须要有 start 参数 String1 必选接受搜索串表达式 String2 必选要搜索串表达式 Compare 可选指示在计算子串时使用比较类型数值有关数值请参阅"设置"部分如果省略将执行 2进制比较 [设置] compare 参数可以有以下值: 常数 值 描述 vbBinaryCompare 0 执行 2进制比较 vbTextCompare 1 执行文本比较 [返回值] InStr 返回以下值: 如果 InStr 返回 1 为零长度 0 1 为 Null Null 2 为零长度 start 2 为 Null Null 2 没有找到 0 在 1 中找到 2 找到匹配串位置 start > Len(2) 0 [介绍说明] 下面举例利用 InStr 搜索串: Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" ' 要在其中搜索串 SearchChar = "P" ' 搜索 "P" MyPos = Instr(4, SearchString, SearchChar, 1) '文本比较从第 4个开始返回 6 MyPos = Instr(1, SearchString, SearchChar, 0) ' 2进制比较从第1个开始返回 9 MyPos = Instr(SearchString, SearchChar) ' 返回 9 ' 缺省为 2进制比较(最后个参数省略) MyPos = Instr(1, SearchString, "W") ' 2进制比较从第1个开始返回 0 (没有找到 "W") -------------------------------------------------------------------------------- 注意 InStrB 使用包含在串中字节数据所以 InStrB 返回不是个串在另个串中第次出现位置而是字节位置 整理总结概括:instr功能就是: 返回或串在另个串中第次出现位置 好了让我们在看看哪个代码: instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then 含义:比较 (空格)和(')在request("id")中具体位置(进行 2进制制比较)假如找到了(空格)和(‘)那么就是then 后语句! 现在大家理解这个含义了吧! 当我看第眼时候我就说假如在asp?Id=90加上(;或,)等等些时不是造样出错吗?(是回答肯定:) 估计又有人说那我会在 instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then 语句中在加些比如改为: instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 or instr(Request("id"),";")>0 or instr(Request("id"),", ")>0 then 等等你还可以在后面加呵呵!(这个好啊!不过比较烂:) 是这样加上后确实能桃过些所谓黑客们手! 其实没必要大家忘了instr(Request("id")," ")>0这句话了吗他还和(空格)比较了啊!只要有这句话那些所谓黑客们and 1 = 1 不就没用了吗? 呵呵 这里是精髓啊! 呵呵!只要有这个基本上不能重and 1=1这里入手了! 当然安全不是绝对别人用 asp?Id=90后随便加个都能出错同时也暴露出了你些信息这个确实是个问题!:(! 呵呵当然了过滤参数还会有其他思路方法比如你自己写个子等等! 0
相关文章读者评论发表评论 |