写代码啦
Cookie、Session和Token的区别
回复数(0) 浏览数(17)
{{topic.upvote_count || 0}} 编辑 回复

Cookie

  • cookie是保存在本地终端的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。
  • cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径,一般设置为全局:"\")、失效时间、安全标志(指定后,cookie只有在使用SSL连接时才发送到服务器(https))。

Cookie的生命周期

Cookie Cookie

Session

  • session的中文翻译是“会话”,当用户打开某个web应用时,便与web服务器产生一次session。服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。

Session的生命周期

Session Session

Token

  • token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库

Token的生命周期

Token Token

总结

  • token的产生:首次请求时,服务器对请求参数(如账号、密码)验证通过,则根据用户标识,加上服务的密钥,通过生成算法,生成token。
  • token的验证:再次请求时,携带此token,则服务端再次根据用户标识,生成token,根据两个token是否一致且未过期来判定用户是否已授权。

  • session也有过期时间的概念,默认为30分钟,可以通过tomcat、web.xml等方式进行配置。
  • session可以主动通过invalidate()方法进行销毁。session通过session_id识别,如果请求持有正确的session_id,则服务器认为此请求处于session_id代表的会话中
  • session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。

  • cookie本身是由服务器产生的,生成之后发送给浏览器,就是浏览器存储本地目录的一小段文本。
  • cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
  • cookie是以key-value形式存储的。
  • cookie大小有限制,为了保证cookie不占用太多磁盘空间,每个cookie大小一般不超过4KB。
{{topic.upvote_count || 0}}

Cookie

  • cookie是保存在本地终端的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。
  • cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径,一般设置为全局:"\")、失效时间、安全标志(指定后,cookie只有在使用SSL连接时才发送到服务器(https))。

Cookie的生命周期

Cookie Cookie

Session

  • session的中文翻译是“会话”,当用户打开某个web应用时,便与web服务器产生一次session。服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。

Session的生命周期

Session Session

Token

  • token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库

Token的生命周期

Token Token

总结

  • token的产生:首次请求时,服务器对请求参数(如账号、密码)验证通过,则根据用户标识,加上服务的密钥,通过生成算法,生成token。
  • token的验证:再次请求时,携带此token,则服务端再次根据用户标识,生成token,根据两个token是否一致且未过期来判定用户是否已授权。

  • session也有过期时间的概念,默认为30分钟,可以通过tomcat、web.xml等方式进行配置。
  • session可以主动通过invalidate()方法进行销毁。session通过session_id识别,如果请求持有正确的session_id,则服务器认为此请求处于session_id代表的会话中
  • session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。

  • cookie本身是由服务器产生的,生成之后发送给浏览器,就是浏览器存储本地目录的一小段文本。
  • cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
  • cookie是以key-value形式存储的。
  • cookie大小有限制,为了保证cookie不占用太多磁盘空间,每个cookie大小一般不超过4KB。
17
回复 编辑