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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
