cookie、token与session的区别

一、cookie session的区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
     考虑到安全应当使用session。
3、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
4、session的确是存放在服务器的内存中(但不是4k上限,具体大小限制应该是服务器内存),而且同一个sessionid的多个 http请求会排队,也就是session对于同一个浏览器来说是同步的,用不好会极大影响性能。另外,session依赖于客户端cookie,因为 sessionid是存放在客户端浏览器进程cookie中的,因此不支持cookie的浏览器,session也会丢失(一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即:每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户)    考虑到减轻服务器性能方面,应当使用COOKIE。
5、所以个人建议:
    将登陆信息等重要信息存放为SESSION
   其他信息如果需要保留,可以放在COOKIE中

token session 的区别

    session      token并不矛盾,作为身份认证   token安全性比session好,因为每个请求都有签名还能防止监听以及重放攻击,而session就必须靠链路层来保障通讯安全了。如上所说,如果你需要实现有状态的会话,仍然可以增加session来在服务器端保存一些状态
    App 通常用restful api跟server打交道。Rest是stateless的,也就是app不需要像browser那样用cookie来保存session,因此用session token来标示自己就够了,session/state由api server的逻辑处理。   如果你的后端不是stateless的 rest api,  那么你可能需要在app里保存session.可以在app里嵌入webkit,用一个隐藏的browser来管理cookie session.
 
   Session  是一种HTTP存储机制,目的是为无状态的HTTP提供的持久机制。所谓 Session  认证只是简单的把 User  信息存储到 Session  里,因为 SID  的不可预测性,暂且认为是安全的。这是一种认证手段。   Token  ,如果指的是OAuth  Token  或类似的机制的话,提供的是 认证 和 授权 ,认证是针对用户,授权是针对 App  。其目的是让 某App有权利访问 某用户 的信息。这里的   Token是唯一的。不可以转移到其它   App上,也不可以转到其它 用户 上。   转过来说 Session  。Session只提供一种简单的认证,即有此   SID,即认为有此   User的全部权利。是需要严格保密的,这个数据应该只保存在站方,不应该共享给其它网站或者第三方App。   所以简单来说,如果你的用户数据可能需要和第三方共享,或者允许第三方调用  API  接口,用  Token  。如果永远只是自己的网站,自己的   App,用什么就无所谓了。
  token 就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用cookie自动登录用户名;session和cookie差不多,只是session是写在服务器端的文件,也需要在客户端写入cookie文件,但是文件里是你的浏览器编号.Session的状态是存储在服务器端,客户端只有session id;而Token的状态是存储在客户端。

猜你喜欢

转载自blog.csdn.net/weixin_40543143/article/details/80689690