【愚公系列】2024年08月 《CTF实战:从入门到提升》 002-Web安全基础知识(HTTP详解)

举报
愚公搬代码 发表于 2024/08/31 23:27:34 2024/08/31
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。🏆《博客内容...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

HTTP(Hypertext Transfer Protocol,即超文本传输协议)是一种用于客户端和服务器之间传输超文本数据的协议。它是互联网的基础通信协议之一,用来定义客户端和服务器之间的通信规则。HTTP通过TCP/IP协议传输数据,其默认端口为80。

HTTP使用请求-响应模型,客户端发送HTTP请求到服务器,服务器则返回对应的HTTP响应。请求包括请求行、请求头部和请求主体,而响应包括响应行、响应头部和响应主体。HTTP请求方法包括GET、POST、PUT、DELETE等,用于定义对服务器资源的操作。

HTTP是无状态的,即服务器不会在不同的请求之间保留任何状态信息。为了实现状态管理,HTTP引入了Cookie和Session机制。Cookie是服务器在HTTP响应中发送给客户端的一个小段数据,客户端将该数据保存并在后续的请求中发送给服务器。Session则是服务器端保存的关于某个用户会话的信息,通过Session ID与客户端进行交互。

除了普通的HTTP协议,还有HTTPS(HTTP Secure)协议,它使用了安全套接层(SSL/TLS)进行加密传输,保证了数据在传输过程中的安全性。HTTPS的默认端口为443。

🚀一、HTTP详解

🔎1.HTTP概述

当我们在浏览器中输入网址并访问网页时,数据是如何从服务器传输到我们的计算机上的呢?这涉及到一系列的协议和步骤,其中HTTP协议起着非常重要的作用。

以下是对应的表格展示:

步骤 描述
1. 用户代理程序发送HTTP请求 用户在浏览器中输入网址,浏览器作为用户代理程序,使用HTTP协议构造请求包,包括请求行、请求头部和请求主体等信息
2. 请求经过网络传输 HTTP请求通过网络传输到服务器,使用TCP/IP协议进行数据传输。数据根据TCP协议进行分割、传输和重组,在每个网络节点经过路由选择到达目标服务器
3. 服务器处理请求 服务器接收到HTTP请求后,根据请求的信息进行处理。服务器可能需要读取数据库、执行代码逻辑等来生成响应数据
4. 服务器发送HTTP响应 服务器使用HTTP协议构造响应包,包括响应行、响应头部和响应主体等信息。响应包中包含了请求的资源,如HTML文件、图像、CSS样式表等
5. 响应经过网络传输 HTTP响应通过网络传输到用户代理程序所在的计算机。同样地,TCP/IP协议确保数据的可靠传输
6. 用户代理程序解析响应 用户代理程序(浏览器)接收到HTTP响应后,解析响应包的内容。它会根据响应头部的信息来确定如何显示响应的内容,比如解析HTML文件,渲染图像等
7. 网页显示 最终,用户代理程序将解析后的网页内容显示在用户的浏览器中,用户可以看到网页的结构、文本、图像等内容

这就是HTTP协议在网页请求和响应过程中的基本原理。通过HTTP协议,我们可以实现在客户端和服务器之间传输数据,并将网页正确地显示在我们的计算机上。同时,HTTP还提供了其他功能,如Cookie和Session机制、缓存控制、身份认证等,来增加交互性和安全性。

在这里插入图片描述
在这里插入图片描述

🔎2.HTTP请求方法

请求方法 描述
GET 通常用于直接获取服务器上的资源
POST 一般用于新增一个数据记录
PUT 一般用于向服务器发送数据,常用于更新资源信息
PATCH 一般用于修改一个数据记录
DELETE 一般用于删除一个数据记录
HEAD 一般用于判断一个资源是否存在
OPTIONS 一般用于获取一个资源自身所具备的约束,如应该采用怎样的HTTP方法及自定义的请求头

🔎3.HTTP请求状态码

状态码 描述
101 Switching Protocols 切换协议,通常见于HTTP切换为Websocket协议
200 OK 请求成功
201 Created 资源创建成功,通常用于回应动词PUT
204 No Content 用于不回显任何内容的情况,如网络联通性检测
301 Moved Permanently 永久跳转,浏览器以后访问到这个地址都会直接跳转到Location头所指向的新地址
302 Found 临时跳转,会跳转到Location头所指向的地址
404 Not Found 所请求资源不存在
405 Method Not Allowed 方法不被允许
500 Internal Server Error 服务器内部错误
502 Bad Gateway 网关在转发内容时出错,通常是转发的下一站–后端不可达或返回了一些奇怪的信息
504 Gateway Time-out 网关在转发内容时出错,通常是转发的下一站–后端不可达

🔎4.HTTP协议的URL

URL就是我们输入的网址,一个标准的URL如下:

https://url/read-6951.html?a=1&b=2#tag5

对每个部分进行解构,概括如下:

scheme:[//[userinfo@] host[:port]] path[?query] [#fragment]
  • 协议scheme:用于代表这个URL所指向的协议。常见的如HTTP、HTTPS、FTP等
  • 用户信息userinfo:通常为“用户名:密码”这类格式,会被编码在Authorization头中发向服务器
  • 主机名(host):指向网络上的服务器的地址、域名,或者IP地址。
  • 端口(port):指向服务器上的端口,如果不填写就会依据协议设置成默认值并且不展示。例如,HTTP是80端口,HTTPS是443端口,FTP是21端口。
  • 请求路径(path):指向服务器上资源的路径,如/read-6591.html会请求该路径对应的资源。
  • 请求参数(query):在请求资源时所带的参数,后端可获取到这些参数。例如,a=1&b=2代表有两个参数a和b,值分别为1和2。
  • 页面描点(fragment):用于指向页面上某个元素,不会被实际发送到服务器,浏览器会进行处理并滚动到该元素出现的地方。

🔎5.HTTP响应头信息

可以看到,返回的请求包中有许多内容,其中返回头的内容非常丰富,这里挑选几个常见的返回头来进行讲解。

Set-Cookie:此头用于远程服务器向本地设置Cookie,Cookie是一种凭证,一般用于客户端向远程服务器证明身份,举例如下:

在这里插入图片描述
Location:这个头用于跳转,通常和上面提到301及302状态码共用,举例如下:
在这里插入图片描述
当浏览器看到这个头后,就会跳转到https://url页面上了


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。