对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?
session机制:就是一个id号(cookie里面携带一个sessionid),所有客户的有效信息都存在服务端,只要产生sessionid后,客户端每次携带这个id就可以了,
就是所有的数据信息都在服务端,每次请求来服务端,得到sessionid里面,再到数据库里面,再到自己后端去查,看sessionid对应得是哪个客户得信息,就知道是哪个客户了。
1、Token引入:在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,然后判断用户名和密码是否正确,并作出相应提示
2、Token:是服务端 把用户的有效信息 生成的一串字符串,直接放到Token里面,以作客户端进行请求的一个令牌。就不用频繁的去数据库查询
第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
3、如何知道传的Token值没有被篡改?或者用户等级只有一级,说自己是三级?如何去验证的?
答:因为Token有个叫哈希算法的,可以把 任意长度的数据(字节串)计算出一个为固定长度的结果数据。
hash算法是不可逆的,是只有服务端能产生这样的数据,然后服务端产生的数据,跟密钥去进行验证就可以了
4、如果是Token机制,是否需要去测试它是否被篡改?
答:如果是Token机制,有必要去验证一下,作为测试,站在对系统不信任的角度,应该去测一下,(拿不到服务端的密钥,可以去伪造一个密钥)
如果开发人员对这个机制不了解,本来是写的,每次改的时候,临时去掉,后来忘记写,直接打包到生产环境里面去,大家都可以伪造了,
所以,毫无疑问应该去测试!!!
5、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
6、应用场景1:校验拷贝下载文件:
下载大文件,由于种种原因,可能会出现传输出错的,校验 下载的文件 是不是 毫无差错?
使用哈希算法:1、下载的网站上,先提供 源文件的 的 哈希值
2、下载完后,在我们的电脑上,把本地下载到的 文件也计算哈希值
3、比对,如果相等,下载没有问题
7、 应用场景1:校验信息有效性:
每年开学时,学生到 管理部 交学费,手机上发一条信息 张三,学费已交,张三带着这个手机信息到 教学部 领书,担心手机短信是伪造的
管理部的人,张三,学费已交|13ty8ffbs2v (哈希算法计算)
教学部的人,张三,学费已交|13ty8ffbs2v (哈希算法计算)
密匙:13ty8ffbs2v(只有管理部跟教学部知道),如果相等,说明短信,没有伪造
8、Python语言计算哈希值(hash算法是不可逆的)
9、加密解密(加解密算法 是可逆的)
对称加密:指 加密和解密 使用相同的 密钥
常见的 对称加密算法有: AES, RC4, DES, 3DES, IDEA 等(安全等级较高的是 AES)
不对称加密:指 加密和解密 使用不同的 密钥
通常是一对密钥,称之为公钥(用来加密)和私钥(用来解密)(不对称加密系统 就是 RSA )
Python语言加解密:pip install cryptography 安装该库