开发者学堂课程【云安全基础课- HTTP 协议基础:容器技术基础(4)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/496/detail/6648
HTTP协议概述(上)
概念:
HTTP(HyperText Transfer Protocol,超文本传输协议)是访问万维网使用的核心通信协议,也是今天所有 Web 应用程序使用的通信协议。
HTTP 使用一种基于消息的模型:客户端送出一条请求消息,而后由服务器返回一条响应消息。
由图可以看到 HTTP 客户端一般是指浏览器,发送 HTTP Request Message,Web 服务器进行响应,根据请求把消息返回浏览器。
超文本传输协议简化了很多版本,大部分是向下兼容的。HTTP 最开始是0.9的版本,现在已经过时,只接受 GET 请求,没有在通信协议中指定版本号,也不支持请求头。
由于版本不支持 POST 方法,客户无法向浏览器发送方法。1.0版本是第一个在通讯中指定版本号的,至今仍然在使用,特别是在代理服务器。当前主流服务器是1.1的版本,是持久连接,还能很好配合代理工作,支持以管道的方式同时发送多个请求,功能越来越强,降低了线路的负载,提高了传输速度。
HTTP 消息头:
HTTP 支持许多不同的消息头,其中一些专用于特殊用途。
常用消息头:
Connection 告诉双方是否关闭连接的参数|Content-Encoding 指定传输编码的参数|Content-Length 用于规定消息主体的字节长度|Content-Type 用于规定消息主体的内容的类型
|Transfer-Encoding 方便 HTTP 传输对消息主体使用的编码的一种定义。
请求消息头:
Accept 用于告诉服务器的客户端愿意接受哪些内容|Accept-Encoding|Authorization|Cookie 用于向服务器提交发生过的记录 Host 消息头出现在所指定的 URL 的主机名称|
If-Modified-Since|If-None-Match|Origin|Referer 用于指出请求的源的 URL 路径|User-Agent 指定提供给浏览器相关信息
响应消息头:
Access-Control-Allow-Origin|Cache-Control|Etaq|Expires|Location|Pragma|Server提供 Web 服务器相关软件的信息|Set-Cookie 消息头向浏览器发送 Cookie 浏览器会在请求中将 Cookie 返回给服务器是否设置
|WWW-Authenticate|X-Frame-Options
HTTP 请求:
所有 HTTP 消息(请求与响应)中都包含一个或几个单行显示的消息头(header),然后是一个强制空白行,最后是消息主体(可选),
例如:
第一行:最开始是一个 GET 的请求,然后会有一个 URL 的路径,声明 HTTP 版本1.1
第二行:消息头的信息
第三行:空格,Cookie 以后其实还有一个空行,在 GET 请求中数据是没显示出来的
Referer 的请求源是从 https:
//mdsec.net/auth/488/Home.ashx 中请求过来的跳转到 uid=129的页面;接收的语言是 zh-cn 就是中文;
User-Agent 是 Mozilla 浏览器;Accept-Encoding 格式是 gzip 的格式还有 deflate 的格式;Host 是从 mdsec.net 来的;连接信息是要保持连接;Cookie 信息 Session是没有设置 Cookie 的。
HTTP 方法:
当渗透测试员攻击 Web 应用程序时,几乎肯定会遇到最常用的方法:GET 和 POST。
GET 方法的作用在于获取资源。
POST 方法的主要作用是执行操作。
HTTP1.0定义了 GET、POST、HIDE 三种方法,1.1的版本增加到了5种方法,HTTP 方法可以自行搜索进行学习。
HTTP 响应:
以下是一个典型的 HTTP 响应:
给客户端浏览器返回浏览器的版本,返回相应的码200,正常执行,日期;Sever 端是IS 的6.0的版本;
Set-Cookie 让浏览器将信息记录;请求的类型是 HTML 的类型;使用的是 UTF-8的语言;长度返回了1067个字节。