思考这个问题主要是有人问到过我:用户登录的密码是如何保护的,又是如何在网络传输下让黑客看到也拿破解不了用户密码,也无法再次模拟登录?
好吧,一个是将密码使用 MD5 加密传输,另一个是使用 HTTPs 协议。
对于我这个小网站,用 HTTPs 有些大题小做,那如果不用 HTTPs 呢?
登录设计
对此我想了下设计了下面登录方式(时序图):

过程分析
- 用户发起登录请求
- 服务器根据用户 IP 及服务器时间,返回上图所写的格式数据。将当前请求信息用 MD5 包裹
- 客户端用服务器返回的数据发送用户名
u和密码p,其中密码用 MD5 包裹 - 最后由服务器判断当前请求的结果:服务器分析用户的 IP、判断发起登录的时间(允许登录的时间窗口为 5s,超时就失败)、判断密码的 MD5 值。
Hack 分析
- 除非 Hack 就在在用户输入的时候就知道密码,否则他在中间任何一步拦截,都无法获取用户密码
- 因为每次发送的密码盐
b都不一样,即使 Hack 伪造,也无法再次同时同地的使用。
博客改造
按照上面设计的方法进行登录改造,避免登录传输明文 password 的问题, 并且对登录后的 token 重点关键信息进行了 md5 修改. 整个前后台修改不到 2h, 很快哈.
这里使用的 md5 工具是js-md5, 详细链接在这里.
修改后的信息见我的博客登录处, 你可以尝试不用的输入,观察发送的结果及后台返回的结果.
(完)
- 本文作者:烈风裘
- 本文题目:登录流程加密的思考
- 本文链接:https://xiangst0816.github.io/blog/deng-lu-liu-cheng-jia-mi-de-di-si-sai-kao/
- 版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!