误区
网上讨论token的生成原理和作用没错。
但是很多开发人员存在一个误区,“”token是为了安全,或者数据安全等“
这是严重的误区,token和安全没有关系好吧。下面有讲
原理
用户第一次登录,服务器通过数据库校验其UserId和Password合法,则再根据
随机数字+userid+当前时间戳 再经过DES加密生成一个token串
作用
请求参数中带token
1.用户在调用需要登录操作的接口时,无需传递userid和password即可完成操作(因为token代表登录成功)
2.服务器控制过期时间,假如一个极端情况,服务器端的token规则泄露,则可以控制用户可以重新登录,获取新的token
数据库服务器得到改善
我们知道服务器一般性能瓶颈多在于数据库服务器,一般采用读写分离,token也是其中的一种方式。减少了不断通过校验userid和password。
因为token放在另外一台Redis(NoSQl中的键值对数据库,主要在内存也可以在磁盘,功能强大)服务器上,这样就减少了主数据库服务器压力
客户端
通俗的讲,如果你的token被截获,那么相当于你完全被盗了,相当于对方登录了你的账号,可以做任何需要用户登录的操作。比如支付,修改个人资料,删除好友等等爆炸操作。所以一定要保证其安全性。
上面说到了误区,token的作用就是避免用户来回传userid和passwod然后服务器查询主数据库服务器。
安全性
token如此重要如何保证安全
服务器端:不多说了,代码安全。
客户端: 1. 本地存储 token对称加密(因为Android一般存在SharedPreference里)
2.Apk加固 防止被反编译,动态调试等等
3.传输安全采用https方式,且最好双向验证,如果没有你还不想被别人抓到看到原始数据,那就至少要做一下对称加密。如果你是Http方式一定记得至少要对称加密再传输数据。
网友评论