这是HTTP安全和HTTP基础上的两个部分系列中的第一部分。在第一个部分中,我们会为您带来HTTP协议的概述。
HTTP是一种普遍存在的协议,是Web的基石之一。如果您是Web应用程序安全性的新人,则在通过自动安全工具解释调查结果时,HTTP协议的声音知识将使您的生活更轻松,如果您想进一步拍摄此类结果,则需要更轻松 手动测试。以下是一个以安全为中心的HTTP协议介绍,以帮助您入门。
HTTP概述
http是A. 消息基于 (request, response), 无国籍方式 由此组成的协议 标题 (键值对)和可选的 身体。到目前为止,三个版本的HTTP已发布 - HTTP / 1.0(1996年发布,罕见使用),HTTP 1.1(1997年发布,广泛使用)和HTTP / 2(2015年发布,增加使用)。
HTTP协议适用于 传输控制协议 (TCP)。 TCP是Internet协议套件中的核心协议之一,它提供了一种可靠,有序和错误检查的数据流,使其成为HTTP的理想选择。 HTTP的默认端口是 80, 或者 443 如果您使用的是https(通过tls的http的扩展)。
http是A. 基于线路 协议,意思是每个标题在其自己的行中表示,每个线路结束在返回线馈送(CRLF)中,带有一个空线从请求或响应的可选主体分离头部。
最多达到http / 1.1,http是一个 文本为基础 但是,通过http / 2,它已更改 - http / 2,与其前身不同 二进制 具有需要TLS加密的大多数实现的协议。值得注意的是,对于绝大多数情况(并且当然,对于本文)与HTTP / 2协议的交互不会是任何不同的。值得一提的是,HTTP / 1.1不会很快消失,它仍然是HTTP / 2的早期(因此,在本文中将引用HTTP / 1.1)。
HTTP请求
为了启动HTTP请求,客户端首先在指定端口(默认)上的指定服务器上建立TCP连接(80或443)。
该请求将从已知为a的初始行开始 请求行 which contains a 方法 (在以下示例中进入以下示例,更稍后更多),a URL. (/,表示下面示例中主机的“根”)和HTTP 版本 (下例中的HTTP / 1.1)。我们还必须包括一个 主机标题 为了告诉HTTP客户端在哪里发送此请求。
得到 / HTTP/1.1
Host: www.example.com
以上是键入时的浏览器确实是什么 http://www.example.com 进入其URL栏。如果我们想要获得内容 http://www.example.com/about.html,我们将发送以下请求。
得到 /about.html HTTP/1.1
Host: www.example.com
HTTP请求方法
HTTP协议定义了多个HTTP 请求方法 (有时也称为动词),它在HTTP请求中使用,以向服务器向特定资源指示所需的动作。
方法 | 描述 |
---|---|
得到 | get方法用于 取回 来自服务器的资源。 |
邮政 | 邮政方法用于 提交 data to a resource. |
痕迹 | 跟踪方法用于 回声回来 客户发送的任何东西。此HTTP方法通常被滥用用于反射跨站点脚本(XS)。 |
修补 | 补丁方法用于应用 部分更新 to a resource. |
放 | 放方法用于 代替 a resource. |
头 | 头部方法用于 取回 资源与GET请求相同,但是 没有响应机构. |
删除 | 删除方法用于 删除 指定的资源。 |
选项 | 选项方法用于描述资源的支持的HTTP方法。 |
连接 | 连接方法用于建立到目标资源指定的服务器(由HTTP代理和HTTPS使用)的服务器建立隧道。 |
http响应
在服务器端,在端口80上收听HTTP服务器,将HTTP响应返回到客户端的请求。
HTTP响应将包含一个 状态行 作为响应的第一行,其次是响应。状态行表示 版本 of the protocol, the 状态码 (在下面的示例中),通常是该状态代码的描述。
此外,服务器的HTTP响应通常还包括响应标题(下面示例中的内容类型)以及可选主体(请求的头部结束时具有空线)。
HTTP/1.1 200 OK
Content-Type: text/html
<html>
...
</html>
响应状态代码
HTTP响应状态代码由HTTP响应中的服务器发出,以便客户知道请求的状态是什么。状态码在以下类别中组织。
状态代码组 | 描述 |
---|---|
1xx | 信息化学 |
2xx | 成功 |
3xx | 重定向 |
4xx | 客户端错误 |
5xx | 服务器错误 |
Web应用程序安全性测试的一些最相关的HTTP状态码是以下内容,但可以找到完整的状态代码列表及其描述 这里.
状态代码组 | 描述 |
---|---|
200 OK | 表示该请求成功。 |
301永久搬动 | 表示请求的资源已被永久移动到位置响应标头内的URL。 |
找到302(临时重定向) | 表示请求的资源已被永久移动到位置响应标头内的URL。 |
400个糟糕的要求 | 表示服务器无法理解客户端的请求,通常是由于无效语法 |
401未经授权 | 表示由于身份验证不足而无法提供请求。 |
403禁止 | 表示服务器理解请求但拒绝授权它。 |
404没有找到 | 表示服务器找不到所请求的资源。 |
405方法不允许 | 表示请求方法是服务器已知的,但不允许使用此资源。 |
500内部服务器错误 | 表示服务器遇到了一个预防它履行请求的意外情况。 |
Source://www.acunetix.com/blog/