Request对象探讨
来源:互联网 发布:windows配置ntp客户端 编辑:程序博客网 时间:2024/05/17 06:40
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”。呵呵,按前面的排序有个优先级的
在一堆服务器响应数据之后,我们看到了“lake2,Success!”(Q:为什么空格不见了?A:因为未对提交的空格进行URL编码)。
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。
- Request对象探讨
- Request对象探讨
- ASP里Request对象的探讨
- Request 对象
- Request对象
- Request 对象
- Request 对象
- request对象:
- Request 对象
- REQUEST对象
- Request 对象
- Request 对象
- Request 对象
- Request对象
- Request对象
- request对象
- Request 对象
- request 对象
- 80后的你,是这样么?
- ASP.NET的Request对象的属性介绍
- 学习C++primer心得08.5.25以前
- HelloRequest.java
- new说透 C#---.net 学习
- Request对象探讨
- 发愁中~
- JAVA正则表达式4种常用功能
- Request 对象
- 开发者眼中的Android手机平台
- 文字图片滚动的html代码
- Installing and Using the Torque Object Mapper
- 被两个变态问题整的焦头烂额
- Linux性能监控