Session Cookie Token

简介: Session Cookie Token

为什么需要Session 、Cookie 、 Token ?


早期的互联网相当于一个文件服务器,访问服务器,只是提供了文件浏览功能。每次请求都是一个  HTTP 协议请求,服务器并不知道是谁访问了互联网,后来随着电子商务,论坛等网站的发展,有了用户登录,服务器需要知道是谁登录了网站。怎么解决这个问题呢?


HTTP 是一个无状态协议,什么是无状态呢?就是说这一次请求和上一次请求是没有任何关联。这种无状态的的好处是快速,坏处是假如我们想要把www.zhihu.com/login.html和www.zhihu.com/index.html关联起来,无关联不能知晓,这次是哪个用户访问了这个网页,页面跳转了,不知道还是不是同一个用户在访问, 因此采用了一些工具和手段将网页关联起来,采用共享信息的办法,让域名下所有网页共享同一个信息,比如说共享用户登录信息。服务器就知道了是谁在访问这个网页了。


Session



Session 和 Cookie 的作用都是为了保持访问用户与后端服务器的交互状态

Session 就是来解决网页共享数据的一种方式,Session 相当于用户的档案库,存储在服务器端,用户的登录信息存储在Session 中,服务器为每个用户分配一个Session ID  ,客户端保存这个SessionID就可以了。客户端退出后,清除Session ,但是因此带来了一个问题 ,如果用户小明访问了服务器 a, 服务器 a 保存了用户的信息,此时跳转到另外一个页面,这个页面在服务器 b, 要无缝连接,客户端无感知,只能服务器 b 的 session 保存小明的信息,验证登录用户还能不能访问服务器,否则只能让小明就不能访问服务器 b,用户需要重新登录。



这也是 Session 的缺点,不容易在多台服务器之间共享。

Session 不方便服务器之间的同步,怎么办? 服务器端能不能不保存 Session,客户端保存就可以了,服务器只要验证就行了。


Cookie

Cookie 通俗点说,就是用户通过 HTTP  访问一个服务器时,这个服务器还会将一些 Key/Value 键值对返回给客户端浏览器,客户端浏览器下次访问服务器时,将Cookie 带回给服务器。服务器不存储用户的登录信息,通过验证 Cookie 信息来确认是不是保持着用户和服务器直接的交互状态。


HTTP 访问的过程


  • 首先,客户端会发送一个http请求到服务器端。
  • 服务器端接受客户端请求后,建立一个session,并发送一个http响应到客户端,这个响应头,其中就包含Set-Cookie头部。该头部包含了sessionId。Set-Cookie格式如下:


Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]
  • 在客户端发起的第二次请求,假如服务器给了set-Cookie,浏览器会自动在请求头中添加cookie
  • 服务器接收请求,分解cookie,验证信息,核对成功后返回response给客户端


640.png



Cookie 是保存在客户端的,避免了 Session 存储在服务器端带来了资源开销,也避免了服务器之间共享 Session , 但是也有缺点,使用 Cookie 来传递消息,随着 Cookie 数量的增多和访问量的增加。占用网络带宽消耗很大。但是一旦客户端被劫持,Cookie 信息泄露,就可能会出现其他用户盗用 Cookie 信息, 网站登录身份从游客变成了用户登录了,造成用户信息全部泄露。那有什么办法让 访问更加安全一些呢?


Token


Token 和 Cookie 有点类似,用户访问服务器时,服务器返回一个 Token ,用户下次访问时,将这个 Token 信息带回给服务器,这样就能完成验证了。只是和 Cookie 不一样的是,Cookie 携带的是明文信息,Token 对信息进行了处理。

用户访问服务器,服务器返回 Token ,这个Token 是用服务器的密钥进行加密的,对数据进行一个签名,秘钥只有服务器知道,别人就不能伪造 Token 信息了,用户再把 Token 信息带过来时验证就可以了。(是不是想说,用户怎么知道服务器是不是别人伪造了,这就牵扯 公钥私钥了,这里就不深入了),总之,服务器可以确认,用户的请求不是伪造的了。比Cookie 就相对安全了。


Token 访问过程


  • 用户通过用户名和密码发送请求服务器程序验证。
  • 服务器程序返回一个签名的token 给客户端。
  • 客户端储存token,并且每次用于每次发送请求。
  • 服务器验证token并返回数据。
相关文章
|
7天前
|
存储 前端开发 Java
JavaWeb基础7——会话技术Cookie&Session
会话技术、Cookie的发送和获取、存活时间、Session钝化与活化、销毁、用户登录注册“记住我”和“验证码”案例
JavaWeb基础7——会话技术Cookie&Session
|
25天前
|
存储 JavaScript 前端开发
Cookie 反制策略详解:Cookie加解密原理、Cookie和Session机制、Cookie hook、acw_sc__v2、jsl Cookie调试、重定向Cookie
Cookie 反制策略详解:Cookie加解密原理、Cookie和Session机制、Cookie hook、acw_sc__v2、jsl Cookie调试、重定向Cookie
42 1
|
27天前
|
存储 安全 搜索推荐
【JavaWeb 秘籍】Cookie vs Session:揭秘 Web 会话管理的奥秘与实战指南!
【8月更文挑战第24天】本文以问答形式深入探讨了Web开发中关键的会话管理技术——Cookie与Session。首先解释了两者的基本概念及工作原理,随后对比分析了它们在存储位置、安全性及容量上的差异。接着,通过示例代码详细介绍了如何在JavaWeb环境中实现Cookie与Session的操作,包括创建与读取过程。最后,针对不同应用场景提供了选择使用Cookie或Session的指导建议,并提出了保障二者安全性的措施。阅读本文可帮助开发者更好地理解并应用这两种技术。
31 1
|
1月前
|
存储 安全 搜索推荐
深入探讨Session和Cookie的概念、用途以及如何在Java Web开发中有效地使用它们进行用户状态管理。
在Java Web开发中,Session和Cookie是管理用户状态的核心技术。Session存储于服务器端,通过唯一的Session ID识别用户,确保数据安全与隐私;Cookie则存储于客户端,用于记录用户偏好等信息。两者各有优势:Session适合存储敏感数据,但需合理管理避免资源浪费;Cookie便于持久化存储,但在安全性上需谨慎设置。开发者可通过Servlet API轻松操作二者,实现个性化用户体验与应用性能优化。
26 2
|
1月前
|
存储 缓存 安全
Cookie和Session
【8月更文挑战第20天】
15 1
|
1月前
|
存储 JSON JavaScript
震撼!Cookie、Session、Token、JWT 终极对决:揭开 Web 认证的神秘面纱!
【8月更文挑战第13天】Web 开发中,Cookie、Session、Token 和 JWT 常混淆。Cookie 是服务器给客户端的小信息片,如登录状态,每次请求都会返回。Session 则是服务器存储的用户数据,通过 Session ID 追踪。Token 类似通行证,证明客户端身份且可加密。JWT 是结构化的 Token,含头部、载荷及签名,确保数据完整性和安全性。
39 4
|
20天前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
65 0
|
3月前
|
存储 编解码 应用服务中间件
会话跟踪技术(Session 以及Cookie)
会话跟踪技术(Session 以及Cookie)
|
3月前
|
存储 前端开发 小程序
表白墙完善(数据库,前端,后端Servlet),再谈Cookie和Session。以及一个关于Cookie的练习小程序
表白墙完善(数据库,前端,后端Servlet),再谈Cookie和Session。以及一个关于Cookie的练习小程序
|
4月前
|
存储 Web App开发 安全
Cookie和session 及Web相关工具
Cookie和session 及Web相关工具