Cookie,Session与Token
2019-07-26 16:59
88 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/AlbanCP3/article/details/97393517
- Cookie
什么是cookie?cookie是在client访问网站时,由server返回的一种标记为cookie类型的数据。server返回后浏览器将cookie存储在client电脑上,以后每次访问该server浏览器都会在http的请求头中加入cookie发送。 - Session
在client访问server时,应用服务器对client发送的账号密码进行验证,如果在数据库中查询到相应的信息,即账号密码正确,则服务器会创建一个session并为这个session通过一定的算法生成唯一的key(也就是标识)即sessionid,将sessionid和session分别作为键值保存至缓存或者数据库中,并将sessionid放在cookie中(Set-Cookie)返回给client。client收到cookie后,以后发送请求时会将cookie一并发送,server会在数据库中查询收到的cookie中的sessionid是否有匹配,如果匹配则进一步检查sessionid是否与库中的某一账户匹配,以及session此时否已经失效。
在上述的过程中cookie充当了桥梁和载体的作用,如果浏览器禁用了cookie或者本身不支持cookie,则可以通过url重写的方式发送到服务器。 - Token
出现背景:session的存储需要空间,一般通过cookie传递,或者url重写;而token在服务器时可以不存储用户信息的,而且token的传递可以通过cookie但不局限于通过cookie,同样可保存。
生成方式:client访问server时,在验证成功后server会根据发送来的数据使用Hash算法生成唯一的一个密钥(如HMAC-SHA256算法),生成一个token,然后通过BASE64编码后返回给client这个token,client将这个token保存下来,在下次发送请求时,在请求中加入token,server收到请求后,使用相同的密钥和算法去验证token,如果通过,则执行业务逻辑返回数据,如果不通过,则不执行。如果过期,则需要重新发送一次认证请求。
使用场景:防止表单重复提交,anti csrf攻击(跨站请求伪造),身份验证 - Session与Token的区别
token和session都可以完成身份验证,session会在服务器中保存一份,一般存储在缓存,文件或者数据库中;session与token都有过期时间。token消耗的服务器资源相对更少,也更快,因为省去了去数据库中查询验证的步骤,只是通过相同的算法进行推演得到结果。
相关文章推荐
- cookie、session和token区别
- Token、Session和Cookie的区别
- 【Todo】Java学习笔记 100==100 & Reflection API & Optional类详解 & DIP、IoC、DI & token/cookie/session管理会话方式
- 彻底理解 Cookie、Session、Token
- cookie/session/token的区别与联系
- Cookie、Session 和 Token区别
- cookie & session & token的简单理解
- session,cookie和token,以及负载均衡
- session、token、cookie的区别
- Session ID/session token 及和cookie区别(转)
- Session,Cookie,Token的区别
- token cookie session
- 前后端分离、session和cookie、token
- Cookie、Session和Token
- session 、cookie、token的区别
- 安全角度浅谈cookie、session、token
- 彻底理解cookie、session、token
- cookie、session、token的区别
- session、token、cookie的区别
- 彻底理解cookie,session,token