登录流程加密的思考

思考这个问题主要是有人问到过我:用户登录的密码是如何保护的,又是如何在网络传输下让黑客看到也拿破解不了用户密码,也无法再次模拟登录?

好吧,一个是将密码使用 MD5 加密传输,另一个是使用 HTTPs 协议。

对于我这个小网站,用 HTTPs 有些大题小做,那如果不用 HTTPs 呢?

登录设计

对此我想了下设计了下面登录方式(时序图):

登录时序图

过程分析

  1. 用户发起登录请求
  2. 服务器根据用户 IP 及服务器时间,返回上图所写的格式数据。将当前请求信息用 MD5 包裹
  3. 客户端用服务器返回的数据发送用户名u和密码p,其中密码用 MD5 包裹
  4. 最后由服务器判断当前请求的结果:服务器分析用户的 IP、判断发起登录的时间(允许登录的时间窗口为 5s,超时就失败)、判断密码的 MD5 值。

Hack 分析

  1. 除非 Hack 就在在用户输入的时候就知道密码,否则他在中间任何一步拦截,都无法获取用户密码
  2. 因为每次发送的密码盐b都不一样,即使 Hack 伪造,也无法再次同时同地的使用。

博客改造

按照上面设计的方法进行登录改造,避免登录传输明文 password 的问题, 并且对登录后的 token 重点关键信息进行了 md5 修改. 整个前后台修改不到 2h, 很快哈.

这里使用的 md5 工具是js-md5, 详细链接在这里.

修改后的信息见我的博客登录处, 你可以尝试不用的输入,观察发送的结果及后台返回的结果.

(完)

Show Comments