tryhackme-预安全-网络如何工作-HTTP 详细信息-10

tryhackme-Pre Security-Network Fundamentals-HTTP in Detail
房间地址:https://tryhackme.com/room/httpindetail
这是网络安全入门的基础模块的计算机科学基础知识:HTTP in Detail(扩展你的网络),序号 01 表示第一篇文章,当你不知道从哪里开始的时候,你可以按照数字顺序来进行参考即可。

HTTP in Detail

Task 1 What is HTTP(S)?

什么是 HTTP?(超文本传输协议)

HTTP 是您访问网站时使用的协议,由 Tim Berners-Lee 及其团队于 1989 年至 1991 年间开发。HTTP 是用于与 Web 服务器通信以传输网页数据的一组规则,这些数据包括 HTML、图像、视频等。

什么是 HTTPS?(超文本传输协议安全)
HTTPS 是 HTTP 的安全版本。HTTPS 数据经过加密,因此不仅可以防止他人查看您正在接收和发送的数据,还可以确保您正在与正确的 Web 服务器通信,而不是任何冒充它的服务器。

Task 2 Requests And Responses

当我们访问网站时,浏览器需要向 Web 服务器发出请求,获取 HTML、图片等资源,并下载响应。在此之前,您需要明确告知浏览器如何以及在何处访问这些资源,这时 URL 就能派上用场了。

  • 什么是 URL?(统一资源定位符)

如果您使用过互联网,那么您一定用过 URL。URL 主要是指如何访问互联网资源的指令。下图展示了 URL 及其所有功能(并非每次请求都会用到所有功能)。

image

Scheme: 这指示使用什么协议来访问资源,例如 HTTP、HTTPS、FTP(文件传输协议)。
User: 某些服务需要身份验证才能登录,您可以在 URL 中输入用户名和密码进行登录。
Host: 您要访问的服务器的域名或 IP 地址。
Port: 您要连接的端口,通常 HTTP 端口为 80,HTTPS 端口为 443,但可以托管在 1 - 65535 之间的任何端口上。
Path: 您要访问的资源的文件名或位置。
Query String:可以发送到请求路径的额外信息。例如,/blog?id=1 会告诉博客路径您希望接收 ID 为 1 的博客文章。
Fragment: 这是对实际请求页面上某个位置的引用。这通常用于内容较长的页面,并且可以将页面的某个部分直接链接到它,以便用户在访问页面时即可查看。

  • Making a Request

只需一行 GET / HTTP/1.1 即可向 Web 服务器发出请求
image

但是,为了获得更丰富的 Web 体验,您还需要发送其他数据。这些其他数据通过所谓的标头发送,标头包含需要提供给正在通信的 Web 服务器的额外信息,我们将在标头任务中对此进行更深入的介绍。

Example Request:

GET / HTTP/1.1

Host: tryhackme.com
User-Agent: Mozilla/5.0 Firefox/87.0
Referer: https://tryhackme.com/

分解此请求的每一行:
第 1 行:此请求发送 GET 方法(更多内容请参阅 HTTP 方法任务),使用 / 请求主页,并告知 Web 服务器我们正在使用 HTTP 协议版本 1.1。
第 2 行:我们告知 Web 服务器我们想要访问的是 tryhackme.com 网站
第 3 行:我们告知 Web 服务器我们正在使用 Firefox 87 浏览器
第 4 行:我们告知 Web 服务器,引导我们访问此网站的网页是 https://tryhackme.com
第 5 行:HTTP 请求始终以空行结尾,以告知 Web 服务器请求已完成。

Example Response:

HTTP/1.1 200 OK

Server: nginx/1.15.8
Date: Fri, 09 Apr 2021 13:34:03 GMT
Content-Type: text/html
Content-Length: 98


<html>
<head>
    <title>TryHackMe</title>
</head>
<body>
    Welcome To TryHackMe.com
</body>
</html>

响应的每一行分解如下:
第 1 行:HTTP 1.1 表示服务器正在使用的 HTTP 协议版本,后面跟着 HTTP 状态码(在本例中为“200 OK”),表示请求已成功完成。
第 2 行:这部分内容告诉我们 Web 服务器软件及其版本号。
第 3 行:Web 服务器的当前日期、时间和时区。
第 4 行:Content-Type 标头告知客户端将发送哪些类型的信息,例如 HTML、图像、视频、PDF 或 XML。
第 5 行:Content-Length 告知客户端响应的长度,这样我们就可以确认没有数据缺失。
第 6 行:HTTP 响应包含一个空行,用于确认 HTTP 响应的结束。
第 7-14 行:已请求的信息,在本例中为主页。

Task 3 HTTP Methods

HTTP 方法是客户端在发出 HTTP 请求时显示其预期操作的一种方式。HTTP 方法有很多,但我们将介绍最常见的方法,尽管您主要会处理 GET 和 POST 方法。

GET 请求
用于从 Web 服务器获取信息。

POST 请求
用于向 Web 服务器提交数据并可能创建新记录。

PUT 请求
用于向 Web 服务器提交数据以更新信息。

DELETE 请求
用于从 Web 服务器删除信息/记录。

Task 4 HTTP Status Codes

在上一个任务中,你了解到 HTTP 服务器响应时,第一行始终包含一个状态码,用于告知客户端请求的结果以及可能的处理方式。这些状态码可以分为 5 个不同的范围:
100-199 - Information Response:这些代码用于告知客户端,其请求的第一部分已被接受,客户端应继续发送请求的其余部分。这些代码已不再常见。
200-299 - Success:此范围的状态代码用于告知客户端他们的请求已成功。
300-399 - Redirection:这些用于将客户端的请求重定向到另一个资源。这可以是不同的网页,也可以是完全不同的网站。
400-499 - Client Errors:用于通知客户他们的请求有错误。
500-599 - Server Errors:这是为服务器端发生的错误保留的,通常表示服务器处理请求时存在相当大的问题。

  • 常见的 HTTP 状态代码:
    200 - OK 请求已成功完成。
    201 - Created 资源已创建(例如,新用户或新博客文章)。
    301 - Moved Permanently 这会将客户端浏览器重定向到新网页,或告知搜索引擎该页面已移至其他位置并转到该位置进行搜索。
    302 - Found 类似于上述永久重定向,但顾名思义,这只是暂时的更改,不久的将来可能会再次更改。
    400 - Bad Request 这会告知浏览器其请求中存在错误或缺失。如果请求的 Web 服务器资源需要客户端未发送的某个参数,则有时会使用此方法。
    401 - Not Authorised 在您获得 Web 应用程序授权(通常使用用户名和密码)之前,您目前无权查看此资源。
    403 - Forbidden 无论您是否登录,您都没有权限查看此资源。
    405 - 方法不允许 该资源不允许此方法请求,例如,您向资源 /create-account 发送了 GET 请求,而它原本期望的是 POST 请求。
    404 - 页面未找到 您请求的页面/资源不存在。
    500 - 内部服务错误 服务器在处理您的请求时遇到某种错误,无法正确处理。
    503 - 服务不可用 此服务器无法处理您的请求,因为它已超载或正在维护中。

如果您是视觉学习者,还可以查看 http.cat 上的优秀资源来学习状态代码。现在,点击右侧的“查看站点”按钮,查看浏览器中部分 HTTP 状态消息的具体内容。
https://http.cat/ (什么钵钵鸡玩硬儿)

Task 5 Headers

标头是您在发出请求时可以发送到 Web 服务器的附加数据。

虽然发出 HTTP 请求时没有严格要求标头,但您会发现很难正常查看网站。

  • 通用请求标头

这些是从客户端(通常是您的浏览器)发送到服务器的标头。
Host:某些 Web 服务器托管多个网站,因此您可以通过提供主机标头来告知服务器您需要哪个网站,否则您将只会收到服务器的默认网站。

User-Agent:这是您的浏览器软件及其版本号,它告知 Web 服务器您的浏览器软件有助于其根据您的浏览器正确格式化网站,并且某些 HTML、JavaScript 和 CSS 元素仅在某些浏览器中可用。

Content-Length:当向 Web 服务器发送数据(例如以表单形式)时,内容长度会告知 Web 服务器在 Web 请求中预期包含多少数据。这样,服务器就可以确保不会丢失任何数据。

Accept-Encoding:告知 Web 服务器浏览器支持哪些类型的压缩方法,以便减小数据量以便在互联网上传输。

Cookie:发送到服务器以帮助记住您的信息的数据(有关更多信息,请参阅 Cookie 任务)。

  • 通用响应头

这些是服务器在请求后返回给客户端的标头。

Set-Cookie:用于存储的信息,每次请求时都会返回给 Web 服务器(更多信息请参阅 Cookie 任务)。

Cache-Control:响应内容在浏览器缓存中存储多长时间后才会再次请求。

Content-Type:这告诉客户端返回的数据类型,例如 HTML、CSS、JavaScript、图像、PDF、视频等。浏览器可以使用 Content-Type 标头来了解如何处理数据。

Content-Encoding:在通过互联网发送数据时,使用了哪种压缩方法使其更小。

Task 6 Cookies

您可能之前听说过 Cookie,它们只是存储在您计算机上的一小段数据。当您从 Web 服务器收到“Set-Cookie”标头时,Cookie 就会被保存。之后,您每次发出后续请求时,都会将 Cookie 数据发送回 Web 服务器。由于 HTTP 是无状态的(不会跟踪您之前的请求),Cookie 可以用来提醒 Web 服务器您的身份、网站的一些个人设置,或者您是否曾经访问过该网站。让我们以下面的 HTTP 请求为例:

该图表直观地展示了如何在 HTTP 请求中引入 Cookie 以存储用户信息。
image

Cookie 用途广泛,但最常用于网站身份验证。Cookie 的值通常不是明文字符串(用于显示密码),而是一个令牌(token,一种独特的、不易被人为猜测的密码)。

查看您的 Cookie

您可以使用浏览器中的开发者工具轻松查看浏览器向网站发送的 Cookie。如果您不确定如何在浏览器中访问开发者工具,请点击此任务顶部的“查看网站”按钮获取操作指南。

打开开发者工具后,点击“网络”选项卡。此选项卡将显示浏览器请求的所有资源列表。您可以点击每个资源来获取请求和响应的详细分析。如果您的浏览器发送了 Cookie,您将在请求的“Cookie”选项卡中看到这些信息。

Task 7 Making Requests

点击右侧的“查看站点”按钮。

这是一个用于发出演示 HTTP 请求的模拟器,您可以使用它来运用您从上述任务中学到的知识完成以下问题。

就是访问这些钵钵鸡
image

posted @ 2025-10-19 23:16  sec875  阅读(4)  评论(0)    收藏  举报