【网络安全】Web安全基础 - 第二节:前置基础知识- HTTP协议,握手协议,Cookie及Session

本章节主要介绍一些基础知识 d(^_^o)

HTTP协议

什么是HTTP

超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体信息系统的应用层协议。

HTTP是一个基于请求与响应,无状态的,应用层协议,常用语TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有WWW文件都必须遵守这个标准。

设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

HTTP工作流程

-客户端通过TCP三次握手与服务器建立简介

- TCP建立连接成功后,向服务器发送HTTP请求

-服务器收到HTTP请求后,向客户端发送http响应

-客户端通过TCP四次断开,与服务器断开TCP连接


什么是B/S、C/S架构

C/S(Client/Server)客户机和服务器结构

B/S(Browser/Server)浏览器和服务器结构

HTTP的持续连接机制

在HTTP 0.9和1.0中,TCP连线在每一次请求/回应对之后关闭

在HTTP 1.1中,引入了保持连线的机制,一个连接可以重复在多个请求/回应使用。

持续连线的方式可以大大减少等待时间,因为在发出第一个请求后,上方不需要重新运行TCP握手程序。

统一资源定位符(URL)

URL(统一资源定位符):我们常说的网址,包含了用于查找资源的足够信息,而一个完整的URL包含下面几部分:

协议方案名:http,ftp,file,mailto,telnet,ldap……

登陆信息(可选项):如果网页需要认证时,需要填写该参数

服务器地址:可以使用IP地址形式,也可能是能被DNS解析为IP地址的域名形式

端口号(可选项):指定服务器连接的端口号,不填写则指向文本协议的默认端口号

带层次的文件路径:获取资源在服务器中的具体地址

查询字符串(可选项):针对已指定路径的资源,可以使用查询字符串来获取想要的参数

片段标识符:信息片段字符串,用来标记已获取资源中的子资源(在文档中的某个位置)

一个完整的URL通常包含以下部分:
协议(Protocol)
它告诉浏览器或客户端应该使用哪种方式来获取资源。常见的协议有http://(超文本传输协议)和https://(安全超文本传输协议)。这里的“://”是协议和主机名之间的分隔符。
主机名(Hostname)
也就是网站的域名或IP地址,比如www.example.com或192.168.1.1。这个部分指明了资源所在的服务器。
端口(Port)
端口号用于标识在同一台服务器上的不同服务。虽然很多服务都使用默认的端口号(如HTTP的80端口,HTTPS的443端口),但也可以自定义端口号。端口号紧跟在主机名之后,用冒号:分隔。
路径(Path)
路径指明了服务器上资源的具体位置。它由一系列的目录和文件名组成,用斜杠/分隔。例如,在URL http://www.example.com/images/logo.png中,/images/logo.png就是路径部分。
查询参数(Query Parameters)
查询参数用于向服务器传递额外的信息。它们以?开头,后面跟着一个或多个键值对(key-value pairs),每个键值对之间用&分隔。例如,在URLhttp://www.example.com/search?q=hello&page=2中,q=hello&page=2就是查询参数部分。
锚点(Fragment)
锚点用于标识页面内的某个位置。它以#开头,后面跟着一个标识符。浏览器在加载页面时,会滚动到该标识符所在的位置。锚点通常用于页面导航或突出显示某个特定的部分。

统一资源标志符(URI)

URI(统一资源标志符)用来标识抽象或物理资源的一个紧凑字符串

HTTP是基于客户端/服务器(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议

HTTP使用统一资源标识符来传输数据和建立连接

URI和URL的区别:URL是URI的一个子集

客户端请求消息

HTTP请求报文:Web客户端向服务器发送的请求

HTTP请求由四个部分组成:请求行、请求头部、空行、请求数据


请求行包含了三个部分:方法字段、URL字段和HTTP协议版本字段。它们之间用空格隔开。比如“GET /data/info.html HTTP/1.1”。这里,GET就是请求方法,/data/info.html是请求的URL,而HTTP/1.1则是HTTP协议版本

请求方法:

·GET:请求获取Request-URI所标识的资源,这是最常见的方法,通常用来请求数据

·POST:在Request-URI所标识的资源后附加新的数据,用于向指定资源提交数据进行处理请求

·HEAD:请求获取由Request-URI所标识的资源响应消息报头,只返回响应头信息,不返回实体内容,通常用于检查是否有效

·PUT:请求服务器存储一个资源,并用Request-URI做为其标识,通常用于上传文件或更新资源

·DELETE:请求服务器删除Request-URI所标识的资源

·TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断

·OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求

·CONNECT:保留将用来使用 HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器

·PATCH:用于将局部修改应用到资源(由 RFC 5789指定的方法)

接下来是请求头部:
请求头部是由一系列的关键字/值对组成的,每行一对,关键字和值之间用冒号“:”分隔。比如“Accept: text/html”,表示浏览器期望接收到的响应内容类型是HTML。常见的请求头还包括“User-Agent”(产生请求的浏览器类型)、“Host”(请求的主机名)等等。

客户端请求消息:

Host:指定请求的服务器的域名和端口号(Host必须包含,其他都是可选的)

Content-Length:请求的内容长度,用于告知服务器请求体的字节长度,仅当请求方法(如POST,PUT)包含这个请求体时才需要

Accept:指定客户端能够接受的内容类型

X-Requested-With:Ajax异步请求,这个字段是非标准的,但他被广泛用于区分普通页面请求和Ajax请求

User-Agent:包含发出请求的用户信息,通常包括浏览器的名称、版本、操作系统等信息,服务器可以根据这个字段来适配不同的浏览器或设备

Content-Type:请求的与实体对应的MIME信息,这个字段用于告知服务器请求的媒体类型

Origin:指明当前请求来自于哪个站点,常用于检查请求的源是否合法

Referer:先前网页的地址,当前请求网页紧随其后,常用于服务器记录用户的访问来源,也可以用于防盗链等安全策略

Accept-Encoding:指定浏览器浏览器可支持的Web服务器返回内容压缩编码类型

Accept-Language:浏览器可接受的语言

Cookie:HTTP发送请求时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。这样服务器就能识别出用户的身份,并为用户返回个性化的内容

Connection:表示是否需要持久连接

然后是空行:
空行在请求头部和请求数据之间,用于分隔它们。这个空行是必须的,用来告诉服务器请求头部已经结束,接下来是请求数据(如果有的话)。

最后是请求数据:
请求数据也被称为请求包体或请求正文。它包含客户端发送给服务器的具体数据,比如表单数据、文件上传等。对于GET请求来说,请求数据通常附加在URL后面,而对于POST请求,请求数据则包含在请求包体中。

服务器响应消息

HTTP响应报文:在接收和解释请求消息后,服务器返回一个HTTP响应消息,它包含了服务器对请求的处理结果、资源内容等信息。

HTTP响应也由四个部分组成:状态行,消息报头,空行,响应正文


状态行(Status Line)
格式示例:HTTP/1.1 200 OK
包含三个元素:
HTTP版本:与请求消息中的版本相匹配,例如HTTP/1.1。
状态码:三位数,表示请求的处理结果,如200表示成功,404表示未找到资源。
状态信息:状态码的简短描述,如OK。

状态码:状态码由三位数字组成,第一个数字定义了相应的类别,有五种可能取值

·1xx:指示信息--请求已被服务器接收,继续处理

·2xx:成功--请求已经成功被服务器接收、理解、并接受

·3xx:重定向--需要后续操作才能完成这一请求

·4xx:客户端错误--请求有语法错误或无法实现

·5xx:服务端错误--服务器在处理某个正确的请求时发生错误

消息报头(Headers)
包含了服务器环境信息、响应体的大小、服务器支持的压缩类型等。
常见的响应头包括Content-Type、Content-Length、Server、Set-Cookie等。
例如,Content-Type指定了MIME类型的HTML(text/html),编码类型是UTF-8。

空行(Blank Line)
消息报头后面的空行是必须的,用来通知客户端响应头部至此结束。
同时也是用来分隔响应头部与响应体。

响应正文(Body)
服务器返回给客户端的文本信息,即实际请求的资源内容。
在HTML页面中,空行后面的html部分为响应正文。

Cookie/Session简介

HTTP是一个基于请求与响应,无状态的,应用层的协议。

无状态:服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现

Cookie:网站为了辨别用户身份,存储在用户本地终端上的数据—Cookie是由服务器生成的,发送给客户端(通常是浏览器)的。

Cookie总是保存在客户端中,按客户端中的存储位置,可分为会话Cookie和硬盘Cookie:

会话Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的;

硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。

Cookie的根本作用是在客户端存储用户访问网站的一些信息:

1.记住密码,下次自动登录;

2.购物车功能;

3.记录用户浏览数据,进行商品(广告)推荐等

缺陷:

1.Cookie会被附加在每个HTTP请求中,无形中增加了流量;

2.由于在HTTP请求中的Cookie是明文传递的,所以安全性成了问题(除非用HTTPS);

3.Cookie的大小限制在4KB左右,对于复杂的存储需求来说是不够用的

Cookie工作原理:

设置Cookie
当用户首次访问某个网站时,服务器会在HTTP响应的头部信息中设置一个名为Set-Cookie的字段。这个字段包含了Cookie的名称、值以及其他可选属性,比如过期时间、路径、域等。
例如,服务器可能会发送一个名为sessionID的Cookie,用于识别用户的会话。
浏览器保存Cookie
浏览器接收到服务器的Set-Cookie字段后,会将这个Cookie信息保存在本地。具体保存的位置可能是浏览器的缓存文件夹或特定的Cookie文件中。
每个网站都有自己的Cookie存储,不同网站之间的Cookie是相互隔离的。
发送Cookie
当用户再次访问同一个网站时,浏览器会在HTTP请求的头部中添加一个名为Cookie的字段,这个字段包含了用户之前保存的所有Cookie信息。
这样,服务器就能够根据Cookie中的信息来识别用户,并提供个性化的服务。
读取Cookie
服务器接收到带有Cookie字段的请求后,会解析这个字段,提取出其中的Cookie信息。
根据这些信息,服务器可以判断用户的身份、偏好等,并根据需要返回相应的内容。
更新Cookie
在一次会话中,服务器可能会根据用户的操作更新Cookie的值或属性。
例如,当用户在购物网站中添加商品到购物车时,服务器可以更新购物车对应的Cookie,以便在下次访问时能够恢复购物车中的商品。

Session:

Session的根本作用就是在服务器端存储用户和服务器会话的一些信息

1.判断用户是否登陆

2.购物车功能等

Session工作原理:

当用户访问到一个服务器,如果服务器启用Session,服务器就要为该用户创建一个SESSION,并生成一个与此SESSION相关的SESSION ID,这个SESSION ID是唯一的、不重复的、不容易找到规律的字符串,这个ID将被在本次响应中返回到客户端保存,而保存这个SESSION ID的正是cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器

Cookie和Session的区别:

1.存放位置不同:Cookie存放在客户端,Session保存在服务端

2.存取方式不同:Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或二进制数据,需求先进行编码;Session中能够存取任何类型的数据

3.安全性不同:Cookie存储在浏览器上,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容;Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/668771.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

30 分钟内掌握 Mainnet、Testnet 和 Devnet。Devnet是什么??

在区块链技术领域,Mainnet、Testnet 和 Devnet 等术语经常被使用,但也经常被误解。 这三种环境在区块链应用的开发和部署中起着至关重要的作用,但它们的区别和目的却常常被混淆。 让我们踏上探索之旅,揭开 Mainnet、Testnet 和 De…

HTML5+CSS3回顾总结

一、HTML5新特性 1.语义化标签 <header> 头部标签<nav> 导航标签<article> 内容标签<section> 定义文档某个区域<aside> 侧边栏标签<footer> 尾部标签 2.多媒体标签 2.1视频标签vedio 》常规写法&#xff08;尽量都使用mp4&#xff0…

google的chromedriver最新版下载地址

Chrome for Testing availability (googlechromelabs.github.io) 复制对应的地址跳转进去即可下载&#xff0c;下载前先看下自己google浏览器版本&#xff0c;找到对应的版本号去下载&#xff0c;把解压缩的exe放到google浏览器目录下。

3D软件开发的相关技术

3D开发涉及到广泛的技术和工具&#xff0c;涵盖了多个领域&#xff0c;包括计算机图形学、编程、设计、物理模拟等。以下是3D开发中常用的技术和工具&#xff0c;掌握这些技术需要广泛的知识和实践&#xff0c;项目的成功依赖于对这些技术的有效整合和应用。北京木奇移动技术有…

写大型C工程makefile构建~

正文 最开始学习linux应用开发编写的时候&#xff0c;估计大部分伙伴们都是在一个目录里面编译整个工程&#xff0c;主要是linux通常没有非常合适的集成开发环境。 以前单目录的方式实在太过捡漏&#xff0c;在linux环境中进行C代码工程开发很多时候需要编写一个相对比较通用的…

海康 面阵相机命名规则

海康 面阵相机命名规则 https://www.v-club.com/vCollage/vCollageDetail/516?subjectIdRMse6nPiyo

Nginx(openresty) 开启gzip压缩功能 提高web网站传输速度

1 开启nginx gzip压缩后&#xff0c;网页的图片&#xff0c;css、js等静态资源的大小会减少&#xff0c;节约带宽&#xff0c;提高传输效率&#xff0c;给用户快的体验,给用户更好的体验. 2 安装 #centos 8.5 yum install gzip 3 配置 #建议统一配置在http段 vim /usr/loca…

汇舟问卷:兼职做国外问卷三小时挣200

在繁忙的都市生活中&#xff0c;许多人为了生计而日夜奔波。对于大多数人来说&#xff0c;白天的工作已经足够充实&#xff0c;但依然有很多人选择在下班时间&#xff0c;多做些什么&#xff0c;为自己带来一份额外​的收入。 目前下班做的兼职工作不是跑滴滴&#xff0c;就是…

发表《Science Advances》!量子近似优化算法实现再突破

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨慕一/娴睿 排版丨沛贤 深度好文&#xff1a;1500字丨6分钟阅读 摘要&#xff1a;摩根大通、美国能源部&#xff08;DOE&#xff09;阿贡国家实验室和 Quantinuum 的研究人员证明了量子近似…

NetApp财季报告亮点:全闪存阵列需求强劲,云计算收入增长放缓但AI领域前景乐观

在最新的财季报告中&#xff0c;NetApp的收入因全闪存阵列的强劲需求而显著增长。截至2024年4月26日的2024财年第四季度&#xff0c;NetApp的收入连续第三个季度上升&#xff0c;达到了16.7亿美元&#xff0c;较前一年同期增长6%&#xff0c;超出公司指导中值。净利润为2.91亿美…

MySQL-事务日志

事务的隔离性由 锁机制 实现 事务的原子性、一致性、隔离性 由事务的 redo日志 和 undo 日志来保证 redo log 称为 重做日志&#xff0c;提供再写入操作&#xff0c;恢复提交事务修改的页操作&#xff0c;用来保证事务的持久性。undo log 称为 回滚日志&#xff0c;回滚行记录…

揭秘c语言作用域

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要整理c语言中 与作用域相关的知识点 本文适合对象:无编程基础&#xff0c;因为解释的比较多&#xff0c;所以不适合有基础的人快速掌握了 作用域描述 其实就是起作用的区域。比如个变量&#xff0c;函数…

System-Verilog 实现DE2-115倒车雷达模拟

System-Verilog 实现DE2-115倒车雷达模拟 引言&#xff1a; 随着科技的不断进步&#xff0c;汽车安全技术也日益成为人们关注的焦点。在众多汽车安全辅助系统中&#xff0c;倒车雷达以其实用性和高效性脱颖而出&#xff0c;成为现代汽车不可或缺的一部分。倒车雷达系统利用超声…

轻松拿捏C语言——【内存函数】

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f389;创作不易&#xff0c;请多多支持&#x1f389; &#x1f308;感谢大家的阅读、点赞、收藏和关注&#x1f495; &#x1f339;如有问题&#xff0c;欢迎指正~~ 目录&#x1…

简单说说我对集成学习算法的一点理解

概要 集成学习&#xff08;Ensemble Learning&#xff09;是一种机器学习技术框架&#xff0c;它通过构建并结合多个学习器&#xff08;也称为个体学习器或基学习器&#xff09;来完成学习任务。 集成学习旨在通过组合多个基学习器的预测结果来提高整体模型的性能。每个基学习…

《mysql轻松学习·二》

1、创建数据表 contacts&#xff1a;数据表名 auto_increament&#xff1a;自动增长 primary key&#xff1a;主键 engineInnoDB default charsetutf8; 默认字符集utf8&#xff0c;不写就默认utf8 对数据表的操作&#xff1a; alter table 数据表名 add sex varchar(1); //添…

MySQL 一条SQL查询/更新语句是如何执行的?

MySQL 一条SQL查询语句是如何执行的&#xff1f; 1 连接器 首先客户端需要先跟服务端进行连接 2 查询缓存 MySQL 5.7 以及之前的版本会查询MySQL缓存&#xff0c;存储是键值对形式的 分析器 对SQL进行词法分析【会生成词法树】以及语法分析 词法分析&#xff1a; 主要负…

安卓ANR检测、分析、优化面面谈

前言 一个引发讨论的楔子&#xff0c;以下三种现象有什么区别&#xff1a; App停止运行App暂无响应App闪退 答案&#xff1a; 产生原因不同&#xff1a;停止运行是UNCheckExceptionError暂无响应是ANRDialog闪退是CheckExceptionError 本文讨论的主题是ANR的定义、分类、复现…

CISCN 2023 初赛 被加密的生产流量

题目附件给了 modbus.pcap 存在多个协议 但是这道题多半是 考 modbus 会发现 每次的 Query 末尾的两个字符 存在规律 猜测是base家族 可以尝试提取流量中的数据 其中Word Count字段中的22871 是10进制转16进制在转ascii字符串 先提取 过滤器判断字段 tshark -r modbus.pcap …

大学校园广播“录编播”与IP校园公共广播系统技术方案

一、项目概述 1、校园IP网络广播系统概述 大学校园广播系统是学校整个弱电系统中的子系统&#xff0c;它是每个学校不可缺少的基础设施之一&#xff0c;在传递校园文化、传播校园新闻资讯方面发挥着重要的作用。近几年来&#xff0c;虽然视频技术和网络技术在飞速发展&#xf…