这是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/