【一】Cookie与Session的发展史
- Cookie和Session是用来在Web应用程序中跟踪用户会话数据的两种常用技术。
【1】Cookie的发展史
- 1994年,网景通信公司推出了第一个浏览器Cookie技术。
- Cookie是存储在用户计算机上的小型文本文件,用于跟踪用户在网站上的活动。
- 初始版本的Cookie只能存储很少的数据,并且没有强制加密机制,容易被恶意用户篡改或窃取。
- 因此,随着互联网的快速发展,Cookie引起了一系列安全和隐私问题。
【2】Session的发展史:
- 由于Cookie存在的局限性,Web开发人员开始寻找更安全、可靠的替代方案。
- 1997年,Sun Microsystems提出了基于服务器的会话管理方案,即Session。
- Session是在服务器端存储用户会话数据的一种技术。
- 每当用户访问网站时,服务器会为其创建一个唯一的Session标识符(Session ID),并将会话数据存储在服务器上。
- Session ID一般通过Cookie或URL参数传递给客户端,用于识别用户的会话状态。
【3】Cookie和Session的关系:
- 在实际应用中,Cookie和Session通常结合使用。当用户首次访问网站时,服务器会为其分配一个唯一的Session ID,并将其存储在Cookie中,发送给客户端保存。
- 随后,客户端在每次请求中都会携带该Cookie,服务器通过解析Cookie中的Session ID,读取对应的会话数据,实现用户状态的跟踪和管理。
【4】总结:
- Cookie和Session是Web应用程序中常用的用户会话跟踪技术。
- Cookie通过在客户端存储小型文本文件,并将会话标识符传递给服务器,实现会话状态的保持。
- 而Session则是在服务器端存储会话数据,通过Session ID实现对用户会话的追踪。
- 它们的发展历程与互联网的发展紧密相关,为开发人员提供了更多的选择,以保障安全性和用户体验的提升。
【二】Cookie与Session介绍
【1】早期的网站
-
早期的网站都没有保存用户功能的需求,所有用户访问返回的结果都是一样的
- 例如新闻、博客、文章...
-
出现了一些需要保存用户信息的网站
- 例如淘宝、支付宝、京东...
【2】示例
(1)早期的网站无法保存用户信息
- 如果不保存用户登录状态,也就意味着用户每次访问网站都需要重复的输入用户名和密码
- 这对用户来说,体验感极差
(2)解决保存用户信息问题(保存在本地)
- 当用户第一次登陆成功之后,将用户的用户名和密码返回给用户浏览器,让用户浏览器 保存在本地
- 之后访问网站的时候浏览器自动将保存在本地的用户名和密码发送给服务端,服务端获取之后自动验证
- 但是具有极大的安全隐患
(3)优化用户隐私信息(保存在浏览器)
- 当用户登陆成功之后,服务端产生一个随机字符串(在服务端保存数据,用K:V键值对的形式),交由客户端浏览器保存
- 之后访问服务端的时候,都带着随机字符串,服务端去数据库中比对是否有匹配到的随机字符串,从而获得用户信息
- 但是如果截获到当前随机字符串,那么就可以冒充当前用户,其实还是有极大的安全隐患
在web领域没有绝对的安全和绝对的不安全
【1】Cookie
- 服务器保存在客户端浏览器上的信息都可以称之为cookie
- 指代服务端让客户端保存的数据(存储在客户端上与用户信息相关的数据)
- 它的表现形式一般都是k:v键值对(可以有多个)
【2】Session
- 保存在服务器上的信息都可以称之为session
- 指代服务端保存的跟用户信息相关的数据
- 它的表现形式一般都是k:v键值对(可以有多个)
服务端
随机字符串1 用户数据1
随机字符串2 用户数据2
随机字符串3 用户数据3
客户端
随机字符串1、随机字符串2、随机字符串3
【3】token
- session虽然数据是保存在服务端的,但是挡不住数据量大
- 解决办法:服务端不再保存数据
- 登陆成功之后,将一段信息加密处理(用自己独特的加密方式进行加密)
- 将加密之后的结果拼接在信息后面,整体返回给浏览器保存
- 浏览器下次访问的时候带着该信息,服务端自动切取前面的一段信息再次使用自己的加密算法进行加密
- 然后用这段密文与携带过来的密文进行比对
【4】总结
- cookie就是保存在客户端浏览器上的信息
- session就是保存在服务端上的信息
- session是基于cookie工作的(其实大部分的保存用户状态的操作都需要使用cookie)