首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

懂了这个知识点,可以少很多撕逼

之前写过一篇文章,是说明cookie和session的,今天给大家介绍另外一个重要的知识点token,并让大家彻底搞懂cookie、session、token的区别,废话不多说,直接上干货。

什么是token

token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。

Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位,无需再次带上用户名和密码。

最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。

为什么会产生token

我们都是知道HTTP协议是无状态的,这种无状态意味着程序需要验证每一次请求,从而辨别客户端的身份。

在这之前,程序都是通过在服务端存储的登录信息来辨别请求的。这种方式一般都是通过在cookie中存储Session ID来完成。

已经移动端的兴起,这种验证的方式逐渐暴露出许多问题:

a、Seesion:每次认证用户发起请求时,服务器需要去创建一个记录来存储信息。当越来越多的用户发请求时,服务端的内存开销也会越来越大。

b、可扩展性:在服务端的内存中使用Seesion存储登录信息,伴随而来的是可扩展性问题。

c、CORS(跨域资源共享):当我们需要让数据跨多台移动设备上使用时,跨域资源的共享会是一个让人头疼的问题。在使用Ajax抓取另一个域的资源,就可以会出现禁止请求的情况。

d、CSRF(跨站请求伪造):用户在访问银行网站时,他们很容易受到跨站请求伪造的攻击,并且能够被利用其访问其他的网站。

在这些问题中,可扩展性是最突出的,因此token的使用就应用而生了。

cookie、session、token的定义及区别

cookie

Cookie是服务器给客户端发的一个「通信证」。

cookie是浏览器访问服务器以后,服务器传给浏览器的一段数据。客户端浏览器把cookie保存起来,不轻易删除,下次请求同一网站再发送给服务器。

session

a、代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的。

b、cookie中存放着一个sessionID。请求时会发送这个ID。

c、session因为请求(request对象)而产生。

d、session是一个容器,可以存放会话过程中的任何对象。

e、session的创建和使用总在服务端,而浏览器从来都没得到过session对象。

f、Session 是一种HTTP存储机制,目的是为无状态的HTTP提供的持久机制。

token

token是用户验证的方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)。

cookie与session区别

a、cookie保存在客户端,session保存在服务器端。

b、cookie 存在安全隐患,且保存数据有限

d、session一定时间内保存在服务器上。当访问增多,占用服务器性能

session id 认证和token认证有啥区别

a、作为身份认证 token比session id 更安全。

b、APP利用token机制进行身份认证。

Session 认证只是简单的把User 信息存储到Session 里,因为SID 的不可预测性,暂且认为是安全的。这是一种认证手段。 而Token,如果指的是OAuth Token 或类似的机制的话,提供的是认证和授权,认证是针对用户,授权是针对App 。

Session只提供一种简单的认证,即有此 SID,即认为有此 User的全部权利。是需要严格保密的,这个数据应该只保存在站方,不应该共享给其它网站或者第三方App。如果你允许第三方调用api接口,则用token。

token储存在哪?

数据库:token可以储存在数据库中,但是有可能出现查询数据库中token时间太长,导致数据丢失。

内存:为了查询速度,也可以将token储存在内存,这样查询速度没有问题,而且就是token是一个32位的字符串,千万级的用户量,也占不了多少内存的。

token加密

对称加密中的3DES加密,采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

token的好处

1、避免用户多次输入密码

2、实现自动登陆

3、避免在终端直接存储用户的密码

4、标示客户端的请求是否合法

这就是对token的总结,希望非技术出身的小伙伴能有所收获,以后和开发的沟通效率变得更高。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180429G1508W00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券