在向开发人员教授安全课程时,总是让我感到惊讶的一件事是他们对 HTTP 的了解是多么的少。当然,每个人都知道 HTTP 500 错误是服务器上的问题,而 404 则意味着文件丢失,但很少有人真正了解 HTTP 在较低级别上是如何工作的。这对于理解大多数 Web 应用程序漏洞至关重要,并将帮助您成为更好的 Web 开发人员,所以让我们深入了解一下!
如果您对 HTTP 有很好的了解,请跳过此部分。否则,这将是一个很好的复习。首先,让我们先从超级基础的内容开始,然后再快速进入更高级的主题 — HTTP。HTTP 是 Web 服务器和浏览器用于通信的协议。HTTP 基于请求和响应。
当您在浏览器中输入网页 URL 并按 Enter 键时,浏览器会发出 HTTP GET 请求。下面是一个示例:
上面的屏幕截图中有一些值得注意的事情。让我们看一下第一行。首先,HTTP“动词”是 GET,它通常用于检索文档、图像或其他互联网资源。我们稍后会看看其他动词。接下来,被请求的网页是“/home”。“?”后面还有什么吗?是参数,以键/值对的形式出现。最后,提供了 HTTP 版本,在本例中为 1.1。
其余行是 HTTP 标头,它们执行以下操作: 根据域 (Host:) 告诉网络服务器要检索哪个网站;报告用户代理和可接受的编码和语言;以及其他特定于浏览器的选项。
从安全角度来看,我们需要注意查询字符串中的参数会随处记录,因此我们要确保其中没有敏感或重要的内容(例如密码、电子邮件地址或 API 密钥)。
邮政
另一个 HTTP 请求是 POST,它的工作方式几乎与 GET 请求完全相同,只是参数是在请求正文中而不是在第一行发送的。这对于安全性很有好处,因为当请求通过互联网传输时,这些值通常不会默认记录在网络服务器、代理或其他软件上。
其他请求类型包括 OPTIONS、HEAD、PUT、DELETE 和其他一些更模糊的值,但 GET 和 POST 是最常见的。我们看一下 HTTP 响应:
HTTP 响应与 HTTP 请求类似,因为它们基于文本并包含 HTTP 标头。在上面的第一行,HTTP 响应返回 HTTP 状态代码。当一切顺利时,这将是 200 OK。以下是可以返回的状态代码列表:
在状态代码之后,会发送一些服务器标头,包括有关服务器类型及其正在运行的软件的信息。接下来,响应正文包含我们请求的数据,通常是 HTML、CSS、Javascript 或图像或 PDF 等二进制数据。
由于 HTTP 是基于文本的协议,因此很容易发出 HTTP 请求。您可以通过运行 telnet 并连接到 HTTP 服务器,然后手动发出 HTTP GET 请求来尝试此操作。输入“telnet google.com 80”亲自尝试一下。
然后,当 telnet 连接到 Web 服务器时,您可以通过键入以下内容手动发出 HTTP 请求:
“GET / HTTP/1.0(返回,返回)”
这应该返回主页的 HTTP 响应。
就这样,现在您已经了解了 HTTP 的基础知识。以下是重要部分:
HTTP 是基于文本的协议
它由请求和响应组成文章来源:https://www.toymoban.com/diary/web/587.html
它的响应有一个状态代码文章来源地址https://www.toymoban.com/diary/web/587.html
到此这篇关于HTTP 基础知识的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!