您的位置:首页 > 其它

Cookie,Session与Token

2019-07-26 16:59 88 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/AlbanCP3/article/details/97393517
  1. Cookie
        什么是cookie?cookie是在client访问网站时,由server返回的一种标记为cookie类型的数据。server返回后浏览器将cookie存储在client电脑上,以后每次访问该server浏览器都会在http的请求头中加入cookie发送。
  2. 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重写的方式发送到服务器。
  3. 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攻击(跨站请求伪造),身份验证
  4. Session与Token的区别
        token和session都可以完成身份验证,session会在服务器中保存一份,一般存储在缓存,文件或者数据库中;session与token都有过期时间。token消耗的服务器资源相对更少,也更快,因为省去了去数据库中查询验证的步骤,只是通过相同的算法进行推演得到结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: