首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

 711网络 网页编程ASP代码

对instr在asp中过滤多余参数的看法

来源: 互联网    日期:2007-1-13 15:10:40
 

    先不管来砍两句先,呵呵!学asp也有一段时间了,这几天一直在写自己的文章程序,也遇到了好多问题,一些到一写参数的,我就不得不得考虑到一些现在的漏洞,比喻,' 或 and 1=1等等的一些漏洞!别的先不管,今天我就来说说这个漏洞!  [转自:711网络工作室 http://www.tc711.com]

    记得看了一篇文章(不记得什么时候看的了:(,他用到了instr这个函数,具体的应该是这样的。  [转自:711网络工作室 http://www.tc711.com]

    If instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then response.redirect "index.asp"

    
    当然,也也可以在then后面写你想要的!这个先不管!
     
    让我们先来学习instr这个函数吧:

    语法

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

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

    [参数 描述]

    start 可选。数值表达式,用于设置每次搜索的开始位置。如果省略,将从第一个字符的位置开始搜索。如果 start 包含 Null,则会出现错误。如果已指定 compare,则必须要有 start 参数。
     
    String1 必选。接受搜索的字符串表达式。

    String2 必选。要搜索的字符串表达式。
     
    Compare 可选。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅"设置"部分。如果省略,将执行二进制比较。

    [设置]
    compare 参数可以有以下值:

    常数 值 描述

    vbBinaryCompare 0 执行二进制比较。
     
    vbTextCompare 1 执行文本比较。

    [返回值]

    InStr 函数返回以下值:

    如果 InStr 返回

    string1 为零长度 0

    string1 为 Null Null

    string2 为零长度 start

    string2 为 Null Null

    string2 没有找到 0

    在 string1 中找到 string2 找到匹配字符串的位置

    start > Len(string2) 0

    [说明]

    下面的示例利用 InStr 搜索字符串:

    Dim SearchString, SearchChar, MyPos

    SearchString ="XXpXXpXXPXXP" ' 要在其中搜索的字符串。
     
    SearchChar = "P" ' 搜索 "P"。

    MyPos = Instr(4, SearchString, SearchChar, 1) '文本比较从第四个字符开始返回 6。
     
    MyPos = Instr(1, SearchString, SearchChar, 0) '二进制比较从第1个字符开始返回 9。

    MyPos = Instr(SearchString, SearchChar) ' 返回 9。

    ' 缺省为二进制比较(最后一个参数省略)。

    MyPos = Instr(1, SearchString, "W") ' 二进制比较从第1个字符开始返回 0 (没有找到 "W")。
     

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

    总结概括:instr的功能就是: 返回字符或字符串在另一个字符串中第一次出现的位置

    好了,让我们在看看哪个代码:

    if instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then 

    
    含义:比较 字符(空格)与字符(')在request("id")中的具体位置(进行二进制制比较),假如找到了(空格)与(')字符,那么就是then 后的语句!
     
    现在大家理解这个含义了吧!

    当我看第一眼的时候我就说,假如在asp?Id=90加上字符(;或,)等等一些字符时不是造样出错吗?(是,回答的肯定的:)

    估计又有人说,那我会在if instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then 语句中在加些字符,比如改为:if 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后随便加个字符,程序都能出错,同时也暴露出了你的一些信息,这个确实是个问题!:(!

    呵呵,当然了,过滤参数还会有其他的方法,比如你自己写个子函数等等!

     



更多的对instr在asp中过滤多余参数的看法请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2007-1-13 15:10:40   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
  友情赞助  

关于我们 | 联系我们 | 广告投放 | 留言反馈 | 免费程序 | 虚拟主机 | 网站建设 |  网站推广 |  google_sitemap baidu_sitemap RSS订阅
本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报