token的理解及token的生成

一、token的理解

在计算机身份认证中是令牌的意思,词法分析中的意思是标记,通俗的说法是暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。

token的引入
在客户端频繁想服务器请求数据,服务器频繁去数据库查询用户名和密码并进行对比,判断用户名和密码是否正确,造成内存,服务器,数据库的过度使用,token便应运而生。
token的定义
Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
token的目的
为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
使得验证更加安全,一定程度上弥补了cookie的不足。

二、session, cookie, token 的应用以及发展历程

1、session
session是用户全局变量,在整个会话期间都有效,只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSession的invalidate()方法)。
每一个会话会产生一个sessionId在服务器端记录,当用户打开某个web应用,便与服务器产生一次session。服务器使用 sessionId 把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这样服务器就会根据每个人sessionId的不同,区别开谁是谁了,从而返回给用户不同的请求结果。
缺点
单个服务器,用户过多会造成服务器开销太大;分布式的服务器,登录信息会记录在第一次响应的那台机器,后面再请求另一台机器响应就没有登录信息,会认为我们没有登录。

2、cookie
ookie是服务端保存在客户端的临时的少量的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。
缺点
数量限制:cookie每个特定域名下最多生成20个cookie,
安全性问题:如果cookie被拦截了,可以获取所有的session信息,被伪造sessionid。

说到这里,就不得不提一下CSRF 跨站点请求伪造(Cross—Site Request Forgery)
举个简单的栗子:

  1. 小明下班回家,打开电脑浏览器,点开了某购物商城,输入自己用户名和密码请求登录该网站;
  2. 就在当小明用户信息通过验证后,该商城产生Cookie信息并返回给浏览器,此时小明在这个购物商城登录成功,兴奋地点开商品详情,添加购物车,。。。。;
  3. 在小明还未退出这个购物商城之前,他在同一浏览器中,打开一个TAB页访问网站B;
  4. 网站B接收到小明请求后,给他返回一些攻击性代码,并发出一个请求要求访问他刚刚浏览的网站;
  5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在小明不知情的情况下携带Cookie信息,向该购物商城发出请求。但是该购物商城并不知道该请求其实是由B发起的,所以会根据小明的Cookie信息以小明的权限处理该请求,导致来自网站B的恶意代码被执行。
    (啰嗦这么多,其实说白了就是利用他人某些特征,冒充他人,但这些特征不能被购物商城所鉴别是不是冒充的)
    目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。

3、token

Token是服务端生成的一串字符串,当作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token并将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
(就类似于你第一次去会所办了会员卡,第二次去了直接拿着会员卡就好了,不需要再去登记预约了,别人去了冒充你的名字,但是他拿着假的会员卡,一刷就能看出他是个冒牌货。。。)
token实现流程
token实现流程

三、如何生成token

参考:https://www.cnblogs.com/lufeiludaima/p/pz20190203.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值