阿里大師帶你詳解API介面安全

Java_老男孩發表於2019-04-30

API安全機制

為什麼要保證API安全

介面的安全性主要圍繞Token、Timestamp和Sign三個機制展開設計,保證介面的資料不會被篡改和重複呼叫,下面具體來看:

Token授權機制:使用者使用使用者名稱密碼登入後伺服器給客戶端返回一個Token(通常是UUID),並將Token-UserId以鍵值對的形式存放在快取伺服器中。服務端接收到請求後進行Token驗證,如果Token不存在,說明請求無效。

時間戳超時機制:使用者每次請求都帶上當前時間的時間戳timestamp,服務端接收到timestamp後跟當前時間進行比對,如果時間差大於一定時間(比如5分鐘),則認為該請求失效,這個時間要保證足夠完成本次請求的同時儘量短,可以減少快取伺服器的壓力(見簽名機制)。

簽名機制:將Token和時間戳加上其他請求引數就行MD5或SHA-1演算法(可根據情況加點鹽)加密,加密後的資料為本次請求的簽名sign,並將該簽名存放到快取伺服器中,超時時間設定為跟時間戳的超時時間一致(這就是為什麼要儘量短,二者時間一致可以保證無論在timestamp規定時間內還是外本URL都只能訪問一次)。服務端接收到請求後以同樣的演算法得到簽名,並跟當前的簽名進行比對,如果不一樣,說明引數被更改過,直接返回錯誤標識。同一個簽名只能使用一次,如果發現快取伺服器中已經存在了本次簽名,則拒絕服務。

    1. 防止別人隨便呼叫你的api
    1. 保證傳輸資料的安全

那麼你的API還在裸奔嗎?看阿里大師教你安全的程式碼姿勢!(附詳細視訊教程)

文末有視訊教程獲取方式

  • 1,前後端分離mvvm模式的N宗罪;

  • 2,5分鐘搞定密碼學的對稱/非對稱加密;

  • 3,介面簽名,防止資料篡改之泰斗;

  • 4,用程式碼告訴你,令牌實現身份認證;

  • 5,優雅處理身份認證,讓業務程式碼更6;

資料加密

阿里大師帶你詳解API介面安全

加密方法

  • 1,對稱加密

AES,3DES,DES等,適合做大量資料或資料檔案的加解密。

  • 2,非對稱加密

如RSA,Rabin。公鑰加密,私鑰解密。對大資料量進行加解密時效能較低。

Api有哪些安全問題?http介面—前後端分離mvvm

阿里大師帶你詳解API介面安全

安全夠了嗎,還有哪些要做?

阿里大師帶你詳解API介面安全

身份認證—token令牌

阿里大師帶你詳解API介面安全
阿里大師帶你詳解API介面安全

身份認證的封裝—cookie隱式攜帶token

阿里大師帶你詳解API介面安全

傳輸安全

網際網路發展到今天,大家越來越重視自己的隱私,各大公司也越來越重視資料的安全。傳輸過程中的資料安全解決方案主要是“HPPTS”,能夠有效防止中間人攻擊等。但是API中重要的引數還是要進行加密,常用DES或者AES進行加密。有見過API中密碼直接MD5後就行傳輸,但是MD5在2009年謝濤和馮登國僅用了220.96的碰撞演算法複雜度,破解了MD5的碰撞抵抗,該攻擊在普通計算機上執行只需要數秒鐘,引自[維基百科]。

總結

安全是一個永恆的話題,隨著各大網站全站https的推進,安全也越來越被重視。簽名設計大家必須有,HTTPS希望大家有。


本文的重點是API的介面安全。需要更詳細思維導圖和視訊資料的可以加一下技術交流分享群:“708 701 457”免費獲取

同時我經過多年的收藏目前也算收集到了一套完整的學習資料,包括但不限於:分散式架構、高可擴充套件、高效能、高併發、Jvm效能調優、Spring,MyBatis,Nginx原始碼分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多個知識點高階進階乾貨,希望對想成為架構師的朋友有一定的參考和幫助

阿里大師帶你詳解API介面安全
阿里大師帶你詳解API介面安全

阿里大師帶你詳解API介面安全

相關文章