接口的安全性主要圍繞Token、Timestamp和Sign三個機制展開設計,保證接口的數據不會被篡改和重複調用,下面具體來看:算法
Token受權機制:用戶使用用戶名密碼登陸後服務器給客戶端返回一個Token(一般是UUID),並將Token-UserId以鍵值對的形式存放在緩存服務器中。服務端接收到請求後進行Token驗證,若是Token不存在,說明請求無效。後端
時間戳超時機制:用戶每次請求都帶上當前時間的時間戳timestamp,服務端接收到timestamp後跟當前時間進行比對,若是時間差大於必定時間(好比5分鐘),則認爲該請求失效,這個時間要保證足夠完成本次請求的同時儘可能短,能夠減小緩存服務器的壓力(見簽名機制)。api
簽名機制:將Token和時間戳加上其餘請求參數就行MD5或SHA-1算法(可根據狀況加點鹽)加密,加密後的數據爲本次請求的簽名sign,並將該簽名存放到緩存服務器中,超時時間設定爲跟時間戳的超時時間一致(這就是爲何要儘可能短,兩者時間一致能夠保證不管在timestamp規定時間內仍是外本URL都只能訪問一次)。服務端接收到請求後以一樣的算法獲得簽名,並跟當前的簽名進行比對,若是不同,說明參數被更改過,直接返回錯誤標識。同一個簽名只能使用一次,若是發現緩存服務器中已經存在了本次簽名,則拒絕服務。緩存
1,先後端分離mvvm模式的N宗罪;安全
2,5分鐘搞定密碼學的對稱/非對稱加密;服務器
3,接口簽名,防止數據篡改之泰斗;cookie
4,用代碼告訴你,令牌實現身份認證;前後端分離
5,優雅處理身份認證,讓業務代碼更6;mvvm
AES,3DES,DES等,適合作大量數據或數據文件的加解密。性能
如RSA,Rabin。公鑰加密,私鑰解密。對大數據量進行加解密時性能較低。
互聯網發展到今天,你們愈來愈重視本身的隱私,各大公司也愈來愈重視數據的安全。傳輸過程當中的數據安全解決方案主要是「HPPTS」,可以有效防止中間人攻擊等。可是API中重要的參數仍是要進行加密,經常使用DES或者AES進行加密。有見過API中密碼直接MD5後就行傳輸,可是MD5在2009年謝濤和馮登國僅用了220.96的碰撞算法複雜度,破解了MD5的碰撞抵抗,該攻擊在普通計算機上運行只須要數秒鐘,引自[維基百科]。
安全是一個永恆的話題,隨着各大網站全站https的推動,安全也愈來愈被重視。簽名設計你們必須有,HTTPS但願你們有。
本文的重點是API的接口安全。須要更詳細思惟導圖和視頻資料的能夠評論區留言,我會發送