zoukankan      html  css  js  c++  java
  • 移动端APP第一次登录和自动登录流程

    App登陆保存数据流程
    App因为要实现自动登陆功能,所以必然要保存一些凭据,所以比较复杂。 

    App登陆要实现的功能: 

    密码不会明文存储,并且不能反编绎解密; 
    在服务器端可以控制App端的登陆有效性,防止攻击者拿到数据之后,可以长久地登陆; 
    用户如果密码没有泄露,不用修改密码就可以保证安全性; 
    可以区分不同类型的客户端安全性;比如Android用户受到攻击,只会让Android用户的登陆失效,IOS用户不受影响。 

    App第一次登陆流程:
    用户输入密码,App把这些信息用RSA公钥加密:(用户名,密码,时间,mac,随机数),并发送到服务器。 
    服务器用RSA私钥解密,判断时间(可以动态调整1天到7天),如果不在时间范围之内,则登陆失败。如果在时间范围之内,再调用coreservice判断用户名和密码。 
    这里判断时间,主要是防止攻击者截取到加密串后,可以长久地利用这个加密串来登陆。 

    如果服务器判断用户成功登陆,则用AES加密:(随机salt,用户名,客户端类型,时间),以(用户名+Android/IOS/WP)为key,存到缓存里。再把加密结果返回给客户端。 
    客户端保存服务器返回的加密串 
    App自动登陆的流程:
    App发送保存的加密串到服务器,(加密串,用户名,mac,随机数)==>RSA公钥加密 
    服务器用RSA私钥解密,再用AES解密加密串,判断用户名是否一致。如果一致,再以(用户名+Android/IOS/WP)为key到缓存里查询。如果判断缓存中的salt值和客户端发送过来的一致,则用户登陆成功。否则登陆失败。 
    不用AES加密,用RSA公钥加密也是可以的。AES速度比RSA要快,RSA只能存储有限的数据。


    Python爬虫全栈教学,零基础教你成编程大神
    ---------------------
    作者:Victor_Barnett
    来源:CSDN
    原文:https://blog.csdn.net/victor_barnett/article/details/50884746
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    判断表字段是否存在default约束
    在Eclipse mars 4.5.2 中安装spring 插件 spring tool suite
    MySql (mysql-5.6.37) 在Windows的安装及使用
    在CentOS7.2中搭建Tomcat9 并启用http/2 协议
    CentOS 7.2 中 Kafka,Zookeeper的单机部署,伪分布式部署以及真正的分布式部署
    博客歇菜后的总结
    通过WiFi连接手机(device), 出去数据线的烦恼
    Android Studio 使用三星 Note4 真机调试
    在Mac team 工作的那段日子里(一)
    又到年底了,没钱回家咋办?
  • 原文地址:https://www.cnblogs.com/zgq123456/p/9910634.html
Copyright © 2011-2022 走看看