粗略地分析, 登錄機制主要分為登錄驗證、登錄保持、登出三個部分。登錄驗證是指客戶端提供用戶名和密碼,向服務器提出登錄請求,服務器判斷客戶端是否可以登錄并向客戶端確認。 登錄認保持是指客戶端登錄后, 服務器能夠分辨出已登錄的客戶端,并為其持續提供登錄權限的服務器。登出是指客戶端主動退出登錄狀態。容易想到的方案是,客戶端登錄成功后, 服務器為其分配sessionId, 客戶端隨后每次請求資源時都帶上sessionId。
創新互聯建站專業網站建設,網站制作與網站建設公司,1800元做網站建設全包,免費贈送網站基礎優化服務,讓你的網站變得更有價值,公司擁有完善的專業的建站公司流程,能夠為企業提供建站服務。使用PHP+MYSQL開發可交付網站源代碼;符合網站優化排名的后臺管理系統;網站制作收費合理;免費進行網站備案等企業網站建設一條龍服務.
上述簡易的登錄驗證策略存在明顯的安全漏洞,需要優化。
客戶端第一次發出登錄請求時, 用戶密碼以明文的方式傳輸, 一旦被截獲, 后果嚴重。因此密碼需要加密,例如可采用RSA非對稱加密。具體流程如下:
再仔細核對上述登錄流程, 我們發現服務器判斷用戶是否登錄, 完全依賴于sessionId, 一旦其被截獲, 黑客就能夠模擬出用戶的請求。于是我們需要引入token的概念: 用戶登錄成功后, 服務器不但為其分配了sessionId, 還分配了token, token是維持登錄狀態的關鍵秘密數據。在服務器向客戶端發送的token數據,也需要加密。于是一次登錄的細節再次擴展。
在最原始的方案中, 登錄保持僅僅靠服務器生成的sessionId: 客戶端的請求中帶上sessionId, 如果服務器的redis中存在這個id,就認為請求來自相應的登錄客戶端。 但是只要sessionId被截獲, 請求就可以為偽造, 存在安全隱患。
引入token后,上述問題便可得到解決。 服務器將token和其它的一些變量, 利用散列加密算法得到簽名后,連同sessionId一并發送給服務器; 服務器取出保存于服務器端的token,利用相同的法則生成校驗簽名, 如果客戶端簽名與服務器的校驗簽名一致, 就認為請求來自登錄的客戶端。
1.3 TOKEN失效
用戶登錄出系統
失效原理:
在服務器端的redis中刪除相應key為session的鍵值對。
App因為要實現自動登陸功能,所以必然要保存一些憑據,所以比較復雜。
App登陸要實現的功能:
這里判斷時間,主要是防止攻擊者截取到加密串后,可以長久地利用這個加密串來登陸。
不用AES加密,用RSA公鑰加密也是可以的。AES速度比RSA要快,RSA只能存儲有限的數據。
做個攔截器 把沒登錄的攔截了
或者后臺生成token app端每次憑token訪問
apk簽名相當于程序的身份識別代碼。
apk簽名用于程序編譯打包之后,手機在運行程序之前會先去驗證程序的簽名(可以看作類似于我們電腦上常說的md5)是否合法,只有通過了驗證的文件才會被運行,所以簽名軟件的作用的讓文件通過手機的驗證為合法,不同的手機、系統是對應不同的簽名的。
進行加密通訊防止API外部調用
服務器端與客戶端各自會存儲一個TOKEN,這個TOKEN我們為了防止反編譯是用C語言來寫的一個文件并做了加殼和混淆處理。
在客戶端訪問服務器API任何一個接口的時候,客戶端需要帶上一個特殊字段,這個字段就是簽名signature,簽名的生成方式為:
訪問的接口名+時間戳+加密TOKEN 進行整體MD5,并且客戶端將本地的時間戳作為明文參數提交到服務器
服務器首先會驗證這兩個參數:驗證時間戳,如果時間誤差與服務器超過正負一分鐘,服務器會拒絕訪問(防止被抓包重復請求服務器,正負一分鐘是防止時間誤差,參數可調整),
然后服務器會根據請求的API地址和提交過來的時間戳再加上本地存儲的token按照MD5重新生成一個簽名,并比對簽名,簽名一致才會通過服務器的驗證,進入到下一步的API邏輯
用HTTPS通信,另外APP往服務器接口發送的參數帶token,還要加上簽名,服務器端驗簽名(以防參數被篡改),校驗token;同時加上時間戳,防止重放。(簽名算法、密鑰的分配安全存儲要設計好)
對服務器接口要有監控,監控到異常情況要有處理方案。
新聞名稱:app服務器與客戶端安全 app服務器與客戶端安全協議
分享URL:http://vcdvsql.cn/article14/ddsiode.html
成都網站建設公司_創新互聯,為您提供小程序開發、App設計、動態網站、建站公司、搜索引擎優化、網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯