美文网首页
浅谈 iOS 登录注册

浅谈 iOS 登录注册

作者: AndyGF | 来源:发表于2020-04-28 14:27 被阅读0次

    本文以开发 iOS 端 App 为例, 谈谈自己对登录注册的主要流程的理解. 具体的实现细节逻辑, 需要两端对各种情况去做出对应的处理, 比如注册时检查账号是不是已经存在,诸如此类问题

    一. 注册功能主要流程:

    1. 注册流程开始.
    2. 用户输入 账号 和 密码, 点击 <注册>
    3. App 发起申请 key 请求,
      App 先对用户的账号进行 RSA 非对称加密, 然后把加密后的账号传递给 Server ,
    4. Server 返回 key,
      Server 收到请求后, 生成 key 返回给 App, 并保存到数据库,用作以后的校验.
    5. App 用 key 对用户密码加密,
      App 收到 key 后, 结合 key 对用户的密码加密, 加密时进行两次 HASH 运算. 生成加密后的 HPassword, App 保存 key 到钥匙串中, 下次登录时加密使用, key 需要定期更换, 即定key过期后,让用户重新登录, 登录时先申请新的 key, 然后再登录.
    6. 把 HPassword 用 RSA 加密传递给 Server. 不需要做时间戳校验,
    7. Server RSA 解密并保存 HMAC 密码.
      Server 收到传过来的密码保存在对应的账号下, 返回注册成功, 用户接收到成功之后可以让用户重新输入账号密码登录, 可以接着悄悄你替用户登录.
    8. 注册流程完成.

    二. 账号登录功能主要流程:

    1. 用户输入账号 和 密码, 点击登录.
    2. App 如果从钥匙串中取出以前保存的 key, 把账号 和 key 都用 RAS 加密传递给 Server 请求登录时间戳, 这个时间戳必须以系统时间为准,精确到分钟即可, 如: 202004272347, 这样就可以保证 HPassword 时效性最多只有 1 分 59 秒, 防止模拟登录.
    3. Server 生成系统当前时间戳, 检验 key 是否过期, 如果过期再生成一个新的 key, 一起返回给 APP.
    4. App 收到时间戳和 key 后, 如果过期则更新钥匙串中保存的 key, 用 密码 和 key 生成 HPassword, 在 HPassword 后拼接上 时间戳, 再进行 md5 生成 mHPassword, 传递给 Server.
    5. Server 用注册时保存的 HPassword 拼接上系统当前时间戳(time_1)进行 md5 得到 mHPassword_2, 与 mHPassword 进行对比, 如果相等, 则登录成功, 如果不相等, 再用 HPassword 拼接 time_1 的前一分钟进行 md5 得到 mHPassword_3, 与 mHPassword 对比, 如果相等, 则登录成功, 如果还不相等, 则登录失败.

    总而言之, 密码只能是用户知道, 因此只有重置, 没有找回.

    用户隐私数据的原则:

    • 1.网络上不允许明文传递;
    • 2.本地(终端和服务器)不允许明文保存.

    相关文章

      网友评论

          本文标题:浅谈 iOS 登录注册

          本文链接:https://www.haomeiwen.com/subject/hqupwhtx.html