Request废话连篇

request

  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:直接访问ke2">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) 来获取数据就不得而知咯。

时间: 2024-09-09 03:22:34

Request废话连篇的相关文章

多次请求会创建多个request对象吗?

问题描述 多次请求会创建多个request对象吗? 两种情况:1)我多次向同一应用发送不同请求2)多人向同一应用发送请求 解决方案 两种情况都会创建多个request. 解决方案二: http有keepalive

request常用方法

今天在修改bug时,发现程序使用了 request.getScheme() .不明白是什么意思,在google 搜索了一下.现在明白了.整理如下: 1.request.getScheme() 返回当前链接使用的协议:比如,一般应用返回http;SSL返回https; 2.在程序中的应用如下: Java代码   String path = request.getContextPath();      String basePath = request.getScheme()+"://"+

nginx-the plain http request was sent to https port

问题描述 the plain http request was sent to https port 更新war包后,一个页面跳转的时候报the plain http request was sent to https port,大家帮忙看看该怎么解决. 服务器ip:192.168.11.193 nginx配置: .... upstream server { ip_hash; server 127.0.0.1:8080 fail_timeout=5s; } server { listen 844

dojo/request模块整体架构解析

总体说明 做前端当然少不了ajax的使用,使用dojo的童鞋都知道dojo是基于模块化管理的前端框架,其中对ajax的处理位于dojo/request模块.一般情况下我们使用ajax请求只需要引入dojo/request模块,然后按照文档的说明制定参数即可.实际上dojo在这一模块的处理中抽象了很多概念: 平台侦探器:dojo/request/default 请求分发器:dojo/request/registry 全局通知器:dojo/request/notify 数据传输器:dojo/requ

http request乱码的真相

当然,终极原因http协议里没有规定request一定要指定编码,导致浏览器,web服务器都各搞一套-- 下面一一理清. 首先,从浏览器端看下有多少种情况: 1.在浏览器的地址栏,或者搜索框里输入地址:http://www.test.com/衣服/search?keyword=T恤  2.在一个指定了编码的网页中,提交一个form,如: <html> <head> <meta charset="gbk"> </head> <body

pushlet-Pushlet: bad request

问题描述 Pushlet: bad request 页面展示如图所示,连续不停的点击[注册]按钮,点击[注册]按钮时调用reg()函数,关于reg()函数见下面的源码 页面报如下错误:后台报如下错误:Pushlet[WARN] Pushlet: bad request no id specified event=refresh请高手帮忙解决下,谢谢, 源代码如下所示:后台代码java代码:public class HelloWorldEventPullSource implements Seri

php错误提示failed to open stream: HTTP request failed!的完美解决方法

google或者baidu一下,好多这样的问题,解决的方法都是修改php.ini,把allow_url_fopen给启用,改成 allow_url_fopen = On 这样做可以解决某些人的问题,有人说在php.ini中,有这样两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示通过哪种脚本访问网络,默认前面有个 " ; " 去掉即可.)重启服务器. 但是有些还是会有这个警告信息,想用完美的解决

android studio导入时出现HTTP/1.1 400 Bad Request错误

问题描述 android studio导入时出现HTTP/1.1 400 Bad Request错误 导入时就出现这个问题,然后没有办法运行,代码是从github直接下的,不知道有没有什么要改的地方,求大神帮忙 解决方案 HTTP/1.1 400 Bad Request 解决方案二: 错误的全程是这样Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"

使用XMLHTTP Request Object获取服务器数据

object|request|xml|服务器|数据   在Web客户端使用xmlhttp对象,可以十分方便的和服务器交换数据,我们可以获取和发送任何类型的数据,甚至二进制数据到服务器上.xmlhttp技术同时也是目前大多数无刷新页面使用的和服务器交换数据的方式,这种方式比以往的隐藏iframe的方法要方便和经济的多.     同时让我们高兴得是xmlhttp并不是IE特有的东西,虽然目前还不是W3C的标准,不过IE, Netscape/Mozilla, 和Safari都支持.在IE中我们使用ne