一,数据请求
二,何为HTTP协议
1.HTTP协议,即 超文本传输协议(Hypertext transfer protocol) 。是一种详细规定了浏览器和万维网(WWW =World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
2.HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL 协议层之上,这个时候,就成了我们常说的HTTPS。如下图:http是属于“应用层的协议",而且是基于TCP/IP协议的。
3. HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无 状态的协议。
4. HTTP默认的端口号为80, HTTPS的端口号为443。
5.浏览网页是HTTP的主要应用,但是这并不代表HTTP就只能应用于网页的浏览。HTTP是一种协议, 只要通信的双方都遵守这个协议,HTTP就能有用武之地。比如咱们常用的QQ,迅雷这些软件,都会使用HTTP协议(还包括其他的协议)。
三,HTTP协议工作流程
1.首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
2.建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3.服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、 一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4.客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对 于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
四,HTTP协议--Request包
请求行:描述客户端的请求方式、请求资源的名称、http协议的版本号。
例如:POST /login_check HTTP/1. 1
请求头(消息头)包含(客户机请求的服务器主机名,客户机的环境信息等) :
Host:消息头用于指定出现在被访问的完整URL中的主机名称。
User-Agent:这个消息头提供与浏览器或生成请求的其他客户端软件有关的信息。
Accept:这个消息头用于告诉服务器客户端愿意接受哪些内容,如图像类 型、办 公文 档格式等。
Accept-Language:用于声明服务器浏览器可以支持什么语言。
Accept-Encoding:这个消息头用于告诉服务器,客户端愿意接受哪些 内容编码。
Origino:这个消息头用在跨域Ajax请求中,字段里只包含是谁发起的请 求,只存 在 于POST请求。
Referer:这个消息头用于指示提出当前请求的原始URL。
Cookie:提交此前服务器向客户端发送的其他参数(服务器使用Set- Cookie消息 头来设置Cookie, 一般用于身份验证)
Connection:通知通信的另一方,是否在完成HTTP传输后关闭TCP连接。
If-Modified-Since:这个消息头用于说明浏览器最后一次收到所请求的资源的时间。
Date:告诉服务器,当前请求的时间
Content-Type: 提交的数据类型
Content-Length:请求包的长度
请求主体 —— 页面所提交的参数
username=admin&_password=baobei%40521&_remember_me=on
五,HTTP协议--Response包
每个HTTP响应的第一行由3个以上空格间隔的项目组成:
1.使用的HTTP版本。
2.表示请求结果的数字状态码。
3.一段文本形式的“原因短语"。
例如:HTTP/1.1 200 OK
响应头:
Date响应返回的时间,GMT代表格林威治时间(北京市位于东8区,计 北京时间要加 8小时)
Server这个消息头提供所使用的Web服务器软件的相关信息。
Set-Cookie这个消息头用于向浏览器发布cookie,浏览器会在随后的 请求中将 其 返回给服务器。
Accept-Encoding告诉代理服务器缓存两种版本的资源:压缩和非压缩, 这有助于 避免一些公共代理不能正确地检测Content-Encoding标头的问题
Date响应返回的时间,GMT代表格林威治时间(北京市位于东8区,计 北京时间要加 8小时)
Server这个消息头提供所使用的Web服务器软件的相关信息。
Set-Cookie这个消息头用于向浏览器发布cookie,浏览器会在随后的 请求中将 其 返回给服务器。
Accept-Encoding告诉代理服务器缓存两种版本的资源:压缩和非压缩, 这有助于 避免一些公共代理不能正确地检测Content-Encoding标头的问题
Expires这个消息头用于向浏览器说明消息主体内容的有效时间。
Connection这个消息头用于告诉通信的另一端,在完成HTTP传输后是关闭TCP连 接,还是保持连接开放以接收其他消息。
Content-Type这个消息头用于规定消息主体的内容类型。例如,HTML文档的内容类型为text/html
Cache-Controlo 这个消息头用于向浏览器传送缓存指令(如no-cache)。
Content-Length这个消息头用于规定消息主体的字节长度。
Location: 表示重定向跳转的网页地址
六,HTTP协议请求方式及响应码
HTTP协议--请求方式
根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1. 0定义了三种请求方法:
1.GET 2.POST 3.HEAD
HTTP1. 1 新增了五种请求方法:
OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
GET方法的作用在于获取资源。
POST方法的主要作用是执行操作。
HEAD这个方法的功能与GET方法相似,不同之处在于服务器不会在其响应中返回消息主体。
服务器返回的消息头应与对应GET请求返回的消息头相同。因此, 这种方法可用于检查某一 资源在向其提交GET请求前是否存在
TRACE:这种方法主要用于诊断。服务器应在响应主体中返回其收到的请求消息的具体内容。这种 方法可用于检测客户端与服务器之间是否存在任何操纵请求的代理服务器。
OPTIONS:这种方法要求服务器报告对某一特殊资源有效的HTTP方法。服务器通常返回一个包含 Allow消息头的响应,并在其中列出所有有效的方法。
PUT:这个方法试图使用包含在请求主体中的内容,向服务器上传指定的资源。如果激活这个方法,渗透测试员就可以利用它来攻击应用程序。例如,通过上传任意一段脚本并在服务器上执行 该脚本来攻击应用程序。
DELETE:请求服务器删除指定的页面。
CONNECT:HTTP/1. 1协议中预留给能够将连接改为管道方式的代理服务器。
每条HTTP响应消息都必须在第一行中包含一个状态码,说明请求的结果。根据代码的第一位数字,可将状态码分为以下5类。
1xx —提供信息。
2xx —请求被成功提交。
3xx —客户端被重定向到其他资源。
4xx —请求包含某种错误。
5xx —服务器执行请求时遇到错误。
有大量特殊状态码,其中许多状态码仅用在特殊情况下。下面列出渗透测试员在攻击Web 应用程序时最有可能遇到的状态码及其相关的原因短语。
100 Continue当客户端提交一个包含主体的请求时.将发送这个响应。该响应表示已收到请求消息头.客户端应继续发送主体。请求完成后,再由服务器返回另一个响应。
200 OK本状态码表示已成功提交请求,且响应主体中包含请求结果。
201 Created. PUT请求的响应返回这个状态码,表示请求已成功提交。
301 Moved Permanently本状态码将浏览器永久重定向到另外一个在Location消息头中指定 的URL。以后客户端应使用新URL替换原始URL。
302 Found本状态码将浏览器暂时重定向到另外一个在Location消息头中指定的URL.客户端 应在随后的请求中恢复使用原始URL.
304 Not Modified本状态码指示浏览器使用缓存中保存的所请求资源的副本。服务器使用 If-Modified-Since与工f-None-Match消息头确定客户端是否拥有最新版本的资源。
400 Bad Request本状态码表示客户端提交了一个无效的HTTP请求。当以某种无效的方式修 改请求时(例如在URL中插人一个空格符),可能会遇到这个状态码。
401 Unauthorized.服务器在许可请求前要求HTTP进行身份验证。WWW-Authenticate消息头详 细说明所支持的身份验证类型。
403 Forbidden本状态码指出,不管是否通过身份验证,禁止任何人访问被请求的资源。
404 Not Found本状态码表示所请求的资源并不存在。
405 Method Not Allowed本状态码表示指定的URL不支持请求中使用的方法。例如,如果试 图在不支持PUT方法的地方使用该方法,就会收到本状态码。
413 Request Entity Too Large 则本状态码表示请求主体过长,服务器无法处理。
414 Request URL Too Longo与前一个响应类似,本状态码表示请求中的URL过长,服务器无法处理。
500 Internal Server Erroro本状态码表示服务器在执行请求时遇到错误。当提交无法预料的输入、在应用程序处理过程中造成无法处理的错误时,通常会收到本状态码。应该仔细检查服务器响应的所有内容,了解与错误性质有关的详情。
503 Service Unavailableo通常,本状态码表示尽管Web服务器运转正常.并且能够响应请求,但服务器访问的应用程序还是无法作出响应。应该进行核实,是否因为执行了某种行为而造成这个结果。
|