关于H5端token安全性考虑

618 阅读2分钟

一、采用token有效期机制

1)首次登陆成功时,后端需要返回两个token( request_token ,refresh_token )

2)其次requst_token设置比较短的有效期,例如1个小时 ,到期作废并告知前端过期需要刷新

3)request_token 到期后使用refresh_token 静默刷新request_token

4)   refresh_token 设置较长有效期,例如3天 ,过期后重新登陆回到登陆流程

二、客户端存储token时要加密

1)一般获取到token后 ,基本上使用 localStorage 存储在本地,懂点技术的都知道怎么拿到它。如果不加密保存,拿到接口和token后 伪造请求就很容易的。

2)应该使用对称加密,请求的时候解密再请求

三、放在header中请求时,容易暴露token

1)请求时使用加密的token,后端接受请求时中间件解密后再验证token,避免客户端请求时截取token信息,最简单的pc端打开调试模式就可以看到请求头的信息。此处加密和存储token时的加密要不一样,否则没有什么用,不过都要使用对称加密。

2)生产环境使用https协议,避免传输过程中被获取

四、后端token的处理

1)token加密时加上关键的客户端信息,避免更换客户端使用token

2)以token为key ,用户关键信息及常用判断信息(用户密码,用户状态等)作为value存入缓存中;用户更改密码和状态时,将这些关键信息做变更,客户端请求时就能立刻判断出来。减少对数据库的请求

3)如果使用了websocket ,客户端定期发送操作状态给后端,规定时间内没有操作断开连接,注销登录信息等,后端操作空间也很大,可以即时发送各种指令。

任何加密手段都是那啥,对于专业的人来说,解密就是时间成本的问题。只能尽可能保护好关键信息,增加解密的时间成本来达到加密的意义。

每跨出一小步,虽比不上跑,但距离梦想又近了一些,倍感欣慰。