2. 使用用户终端浏览器用户生成指纹数据:在知乎上有人提出了 浏览器端js有如何为本机生成固定的uuid? 这个问题从而引出了美国一篇论文 跨浏览器指纹追踪技术 ;而我们前要保证 前后的接口数据的安全性 要反其道而行之。前端根据用户以及用户的设备浏览器信息
生成一个只在当前浏览器使用的指纹数据。当用户登录的时候 用户密码加上前端自动生成的指纹数据 请求后台的token数据。后台解析指纹数据获取 相关指纹信息和token绑定。以后只要用token换取数据的api接口必须要传递指纹数据。
指纹数据的生成:
指纹数据是由浏览器的设备的多个 特征数值+ 时间 生成的,字符串并用加密算法生成 加密字符串。因为时间的加入 每个请求的 指纹数据都不同,但是解析的指纹 浏览器设备数据是一致的。时间用毫秒计算,所以基本上 不会存在每个请求的 指纹数据相同的情况。
后台要根据token 和指纹数据判断,前一个请求和 指纹数据是否相同,如果相同基本上不可能。 所以token一致,但是指纹数据一定不同,但是解析指纹数据的 浏览器设备信息一定相同;另外可以根据时间 判断这个指纹生存时间;例如这个指纹生成后10s就不允许使用了。这样 即使有人从网络中或者cookie中获取token数据,获取一次请求的指纹数据。
但是 根据这些截取到的数据 再次请求接口 仍然不会 获取到后台的数据。
第二点的处理方案比较复杂,并不需要所有的接口都按照这样处理,可以对一些非常重要的数据接口实行这样的方案,对一些简单数据的接口没必要做这样的验证