1.token:已登陸使用者的識別碼
解決的問題:使用者呼叫介面時,不用每次都帶上使用者名稱和密碼,避免了頻繁在網路中傳輸密碼被截獲的風險。
使用場景:使用者登入系統時傳入使用者名稱和密碼,伺服器校驗成功之後,根據uuid等引數生成token返回給客戶端,同時把該token和該使用者的對應關係快取在伺服器端。客戶端在後續的請求介面中不用每次都傳入使用者名稱和密碼,只需要傳入token即可。伺服器會根據token確定客戶端的身份。
注意:token可設定生效時間,token失效之後,客戶端重新請求token。
2.sign:請求引數的簽名
解決問題:避免請求引數被惡意修改。保證了請求資料的一致性。
使用場景:客戶端和服務端約定乙個簽名生成演算法。客戶端在請求介面之前呼叫簽名演算法,根據引數生成sign值。然後把sign和請求引數一併傳給伺服器。
伺服器收到到引數和簽名之後,根據請求引數,呼叫簽名演算法計算出簽名,然後比較該簽名和客戶端傳過來的簽名是否一致,如果一致,則說明請求引數未被修改過,如果不一致,則說明請求引數被修改過。
3.nonce:請求中附帶的隨機數
解決問題:防止惡意程式重複向伺服器重**送相同的請求。
使用場景:客服端在向伺服器發出請求之前,隨機生成nonce引數。伺服器在接收到請求之後,取出nonce引數,然後去快取中查詢是否已存在nonce的值。如果存在,則說明該請求已經收到過,則 拒絕本次請求,如果不存在,則說明首次接收到該請求,正常進行處理。
4.timestamp:客服端傳送請求的時間戳(timestamp一般和nonce組合使用)
解決的問題:防止伺服器端快取nonce資料量過大的問題。當伺服器快取的nonce較多時,每次查詢nonce就會耗費大量時間。通過新增請求時間戳,判斷請求時間到伺服器接收到請求的時間差是否在有效處理時間內(例如5分鐘),如果在5分鐘之內則進行處理,如果超出五分鐘則拒絕該請求。這樣,伺服器端在快取nonce的時候,可以設定nonce的快取時間為5分鐘,超出5分鐘之後,自動清除掉快取中的nonce,這樣就避免了快取大量nonce的問題。
使用場景:客服端在發出請求時,附帶timestamp,記錄下當前的請求時間。伺服器接收到請求時,取出timestamp,判斷和當前的時間差,如果超出一定的時間(例如5分鐘),則放棄該請求。如果在5分鐘之內,則取出nonce,去快取中查詢nonce,如果已存在則拒絕掉,如果不存在則正常處理。
1.aes:對稱加密演算法
使用方式:客服端和伺服器端共同確定乙個用來加密和解密的秘鑰。然後客服端在請求伺服器是通過該秘鑰對資料進行加密,伺服器端在接收到請求之後使用該秘鑰對資料進行解密。
優勢:加密效率高
缺點:秘鑰需要共享給客戶端,具有洩露的風險
2.rsa:非對稱加密演算法
使用方式:伺服器端生成公鑰和私鑰,把私鑰傳送給客戶端。客服端在請求伺服器是,通過公鑰對資料進行加密。伺服器端接收到請求之後,使用私鑰對加密的資料進行解密。
優勢:不需要共享私鑰,避免了私鑰洩露的風險。
劣勢:加密效率低,資料量大是較為耗時
實際場景中,一般使用如下策略進行加密:
伺服器端通過rsa生成公鑰,然後把公鑰給客戶端。客服端在請求伺服器前, 隨機生成aes秘鑰,然後用aes秘鑰加密請求資料。之後用rsa公鑰對aes秘鑰進行加密,然後把加密之後的aes秘鑰和加密後的請求資料一起傳送給伺服器。伺服器收到請求之後,先用rsa私鑰解密出aes秘鑰,然後用aes秘鑰對請求資料進行解密,獲取請求資料。
網路請求中常見的加密機制和加密演算法理解
請求安全性 伺服器端在接收到請求的時候,要主動鑑別該請求是否有效,是否可接受。token 已登陸使用者的識別碼 解決的問題 使用者呼叫介面時,不用每次都帶上使用者名稱和密碼,避免了頻繁在網路中傳輸密碼被截獲的風險。使用場景 使用者登入系統時傳入使用者名稱和密碼,伺服器校驗成功之後,根據uuid等引數...
加密網路資料
網路資料加密需要解決三個問題 完整 資料不被篡改 安全 資料不被截獲,或者截獲也無法得到明文 可靠 資料從真正的傳送方而來,其他人無法偽造乙個資料來欺騙接受方 下面例子只解決了安全這個問題 非對稱演算法使用的兩個金鑰有如下關係 使用公共金鑰加密的資訊只能被相應的私有金鑰解密。因此,我首要求你給我傳送...
swift 同步 網路請求 swift網路請求
swift同樣可以實現oc中afnetworking mjextension的效果,實現方法是alamofire swiftyjson handyjson alamofire 網路請求 swiftyjson 資料解析 handyjson 對映為model 一 獲取sessionmanager子類的單...