Token 加密方案 MD5加密(自然排序(用户ID+用户注册时6位随机数+登陆时间+ip地址));
随着项目前后端分离的方式被越来越多的公司采用,前后端分离后鉴权与会话保持也成了程序员们日常聊的一个话题。而在鉴权与会话保持方面应用最多的莫过于Token验证。
总结:
前后端分离的项目,如果服务端的接口被多层代理之后,实际上是很不容易拿到准确的客户端IP。虽然本文提出了IP的方案,但依然不能解决被代理的问题。
大家可以尝试浏览器指纹技术
https://zhuanlan.zhihu.com/p/94158920
浏览器在线指纹检测
https://www.yalala.com/
Token验证的原理图:
其实严格意义上来讲,一套合理的Token加密与验证机制可以最大程度的保障系统的安全以及用户良好的体验。一般情况下Token的加密方式仅存在于服务器的代码中并不会被任何人轻易破解。比如经常用的加密方式为:
Token = MD5加密(自然排序(用户ID+用户注册时6位随机数+登陆时间+ip地址));
用户登陆成功后,将Token保存在以活跃用户分组的Redis中用于后期验证。同时Token需要设定一个过期时间。一般为2小时,过期之前需要用旧的Token来请求新的Token。这样的好处是第三方劫持获取的Token后除非在同一IP下才会验证通过。而且MD5加密虽然简单,但是属于不可逆的,即使你拿着字典破解了字符串的内容也毫无意义。
那么Token为什么会被破解呢?
Token正常情况下是不会被破解的,而且作为资深黑客也完全没有必要去破解这串毫无意义的字符,毕竟很浪费时间。Token被破解无非是三种原因。
①加密机制过于简单。黑客一猜就猜到了,比如md5(用户密码)。
②第三方劫持。这个操作难度比较大,而能够劫持链路数据的黑客通常不屑于破解一个小网站去刷单挣钱。
③服务器配置不当。通常服务器的配置使用都由后台开发人员进行管理。服务器配置不当可能会暴露网站目录,同时也可能是被一些爬虫程序抓取了网站的源码。
对于Token的加密与验证就先写这么多,其实暴力破解密码看似是100%能破解,只是时间问题。但实际上对方随意增加一个字符破解难度就会成倍增加。比如前几天波波服务器一直被一个郑州的人采用虚拟IP暴力破解。
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。