新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国XML论坛<<     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 讨论HTML、XHTML、Web2.0、Ajax、XUL, ExtJS, jQuery, JSON、Social Networking System(SNS)、Rich Internet Applications (RIA)、Tagging System、Taxonomy(tagsonomy,folkonomy)、XForms、XFrames、XInclude, XBL (XML Binding Language)等话题
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』 → 一篇关于ASP中Request对象的好文章 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 3838 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 一篇关于ASP中Request对象的好文章 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     dogog 美女呀,离线,快来找我吧!水瓶座1985-2-14
      
      
      等级:大二期末(Java考了96分!)
      文章:46
      积分:317
      门派:XML.ORG.CN
      注册:2007/4/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给dogog发送一个短消息 把dogog加入好友 查看dogog的个人资料 搜索dogog在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 点击这里发送电邮给dogog 引用回复这个贴子 回复这个贴子 查看dogog的博客楼主
    发贴心情 一篇关于ASP中Request对象的好文章

    Request是ASP里的一个内部对象,用于获取HTTP请求中传递的任意信息(如头信息、表单数据、cookies等等)。所以这是在ASP里面最常用的内部对象,常用来获得GET方式提交的数据(Request.QueryString)、表单POST提交的数据(Request. Form)和Cookies(Request.Cookies)。


    我们用Request对象可以指定获取某个特定方式提交的数据。比如我们用这段代码获得通过POST提交的数据lake2的值:request.Form("lake2");而request.queryString("CSDN")获得GET方式提交的CSDN的值。

    对于获取HTTP数据,ASP还给了我们一个更简单的方法:request(key),即直接使用request而不指定数据集合。此时ASP会依次在QueryString、From、Cookies、ServerVariables、ClientCertificate、Browser中检查匹配的数据,若发现则返回数据。

    上面6个集合中,ServerVariables、ClientCertificate和Browser的变量是固定了的;而QueryString、From、Cookies的变量可以任意指定。想不到Cookies可以拿来传递任意数据,以前倒没有注意。

    OK,test一下先。在本地web目录新建test.asp文件,内容为:<%=request("b")%>

    Step 1:直接访问http://127.0.0.1/test.asp?b=la<b>k</b>e2,浏览器显示lake2

    Step 2:构造表单提交结果也如step 1

    Step 3: 构造表单,GET传递b值为“He”,同时POST的b为“She”,浏览器显示为“He”。呵呵,按前面的排序有个优先级的

    Step 4:Telnet到本地80端口,构造HTTP请求如下(注意Cookies哦):


    GET /test.asp HTTP/1.1
    Accept: */*

    Accept-Language: zh-cn

    Accept-Encoding: gzip, deflate

    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; TencentTraveler ; .NET CLR 1.1.4322)

    Host: 127.0.0.1

    Connection: Keep-Alive

    Cookie: b=lake2 , Success !


    在一堆服务器响应数据之后,我们看到了“lake2,Success!”(Q:为什么空格不见了?A:因为未对提交的空格进行URL编码)。

    到此,我们已理论和实际相结合的证明了Cookies可以拿来传递数据。

    Request对象与SQL注射
    现在把话题转一下,我们来说说SQL Injection。

    SQL注射攻击是由于Web应用程序没有过滤用户所提交的有害数据而导致危害服务器的一种攻击手法。注意咯,这里涉及到提交数据,自然要跟刚才说了一大堆的request联系上啊。

    归根结底,ASP下面的SQL注射都是由于request的参数没有过滤或者过滤不严。当然,程序员不是安全专家,他们可能不知道如何过滤。

    于是,网络上就出现了通用的防注射ASP程序——“SQL通用防注入系统”。经过一段时间和几个作者的改进,该程序已经比较完善了,基本上可以拦截SQL注射(但是,个人认为它的过滤方式太严,造成许多不便)。“SQL通用防注入系统”是个asp文件,只需在有参数提交的文件中include它就是了。程序过滤的原理是遍历GET和POST参数的值,发现SQL注射关键字(如and、select)就停止正常文件执行。

    嘿嘿,它遍历GET和POST,也就是Request对象的QueryString和From集合,忽略了Cookies。

    现在,我们假设有一个SQL Injection漏洞百出的ASP程序,具备网络安全知识的管理员同学在网上下载并使用了传说中的“SQL通用防注入系统”,但是很不幸,ASP程序中所有获取参数都是使用的request(key)……(呵呵,眼看着一个个封锁被突破,那是很enjoy的事情^_^)

    这里仅仅是假设而已,至于实际中到底有多少ASP程序员喜欢用request(key) 来获取数据就不得而知咯


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    Love you forever only!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/6 1:58:00
     
     admin 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      头衔:W3China站长
      等级:计算机硕士学位(管理员)
      文章:5255
      积分:18406
      门派:W3CHINA.ORG
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 点击这里发送电邮给admin  访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客2
    发贴心情 
    用cookies来传数据是不妥的,万一用户关闭了Cookie功能。逻辑就出错了

    ----------------------------------------------

    -----------------------------------------------

    第十二章第一节《用ROR创建面向资源的服务》
    第十二章第二节《用Restlet创建面向资源的服务》
    第三章《REST式服务有什么不同》
    InfoQ SOA首席编辑胡键评《RESTful Web Services中文版》
    [InfoQ文章]解答有关REST的十点疑惑

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/6 23:02:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/21 23:29:11

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    62.500ms