【愚公系列】2024年08月 《CTF实战:从入门到提升》 002-Web安全基础知识(HTTP详解)
🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”
- 点赞
- 收藏
- 关注作者
评论(0)