这是关于HTTP安全性和HTTP基础知识的两部分系列的第一部分。在第一部分中,我们为您提供HTTP协议的概述。

HTTP是无处不在的协议,并且是Web的基石之一。如果您是Web应用程序安全的新手,那么对HTTP协议的全面了解将使您在使用自动安全工具解释调查结果时的工作变得更加轻松,并且如果您想进一步了解此类结果,则很有必要 手动测试。接下来是对HTTP协议的注重安全性的介绍,以帮助您入门。

HTTP概述

HTTP是一个 基于消息 (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是一个 基于行 协议,表示每个标头都在其自己的行上表示,每行以回车换行符(CRLF)结尾,并用空白行将标头与请求或响应的可选主体分隔开。

在HTTP / 1.1之前,HTTP是 基于文本 协议,但是,在HTTP / 2中,它已经更改了-HTTP / 2,与其以前的版本不同 二元 大多数实现都需要TLS加密的协议。值得注意的是,在大多数情况下(当然,对于本文而言),与HTTP / 2协议进行交互不会有任何不同。还值得一提的是,HTTP / 1.1不会很快消失,而HTTP / 2仍处于早期阶段(因此,本文将引用HTTP / 1.1)。

HTTP请求

为了发起HTTP请求,客户端首先在指定端口(默认为80或443)上建立到指定服务器的TCP连接。

该请求将以称为a的初始行开始 请求行 which contains a 方法 (在下面的示例中获取,稍后再详细介绍), 网址 (/,在下面的示例中表示主机的“根”)和HTTP  (在下面的示例中为HTTP / 1.1)。我们还必须包括一个 主机头 为了告诉HTTP客户端将请求发送到哪里。

得到 / HTTP/1.1
Host: www.example.com

以上正是您输入时浏览器的功能 http://www.example.com 进入其网址栏。如果我们想得到的内容 http://www.example.com/about.html,我们将改为发送以下请求。

得到 /about.html HTTP/1.1
Host: www.example.com

HTTP请求方法

HTTP协议定义了许多HTTP 请求方法 (有时也称为动词),它们在HTTP请求中用于向服务器指示对特定资源的所需操作。

方法 描述
得到 得到方法用于 找回 来自服务器的资源。
开机自检 开机自检方法用于 提交 data 资源。
跟踪 跟踪方法用于 回声 客户端发送的任何内容。通常,此HTTP方法被滥用用于反映的跨站点脚本(XSS)。
补丁 补丁方法用于申请 部分更新 to 资源。
放方法用于 更换 a resource.
头方法用于 找回 与GET请求相同的资源,但是 没有回应机构.
删除 删除方法用于 删除 指定的资源。
选项 选项方法用于描述资源支持的HTTP方法。
连接 连接方法用于建立到由目标资源(由HTTP代理和HTTPS使用)指定的服务器的隧道。

HTTP响应

在服务器端,侦听端口80的HTTP服务器将HTTP响应发送回客户端,以请求其请求。

HTTP响应将包含一个 状态栏 作为响应的第一行,然后是响应。状态行指示  of the protocol, the 状态码 (在下面的示例中为200),通常是对该状态代码的描述。

此外,服务器的HTTP响应通常还将包括响应标头(在下面的示例中为Content-Type)以及可选的正文(请求头的末尾带有空白行)。

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/