日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

api接口安全

發(fā)布時間:2024/8/1 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 api接口安全 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
接口的安全性主要圍繞Token、Timestamp和Sign三個機(jī)制展開設(shè)計,保證接口的數(shù)據(jù)不會被篡改和重復(fù)調(diào)用,下面具體來看:

Token授權(quán)機(jī)制:用戶使用用戶名密碼登錄后服務(wù)器給客戶端返回一個Token(通常是UUID),并將Token-UserId以鍵值對的形式存放在緩存服務(wù)器中。服務(wù)端接收到請求后進(jìn)行Token驗證,如果Token不存在,說明請求無效。Token是客戶端訪問服務(wù)端的憑證。

時間戳超時機(jī)制:用戶每次請求都帶上當(dāng)前時間的時間戳timestamp,服務(wù)端接收到timestamp后跟當(dāng)前時間進(jìn)行比對,如果時間差大于一定時間(比如5分鐘),則認(rèn)為該請求失效。時間戳超時機(jī)制是防御DOS攻擊的有效手段。

簽名機(jī)制:將 Token 和 時間戳 加上其他請求參數(shù)再用MD5或SHA-1算法(可根據(jù)情況加點鹽)加密,加密后的數(shù)據(jù)就是本次請求的簽名sign,服務(wù)端接收到請求后以同樣的算法得到簽名,并跟當(dāng)前的簽名進(jìn)行比對,如果不一樣,說明參數(shù)被更改過,直接返回錯誤標(biāo)識。簽名機(jī)制保證了數(shù)據(jù)不會被篡改。

拒絕重復(fù)調(diào)用(非必須):客戶端第一次訪問時,將簽名sign存放到緩存服務(wù)器中,超時時間設(shè)定為跟時間戳的超時時間一致,二者時間一致可以保證無論在timestamp限定時間內(nèi)還是外 URL都只能訪問一次。如果有人使用同一個URL再次訪問,如果發(fā)現(xiàn)緩存服務(wù)器中已經(jīng)存在了本次簽名,則拒絕服務(wù)。如果在緩存中的簽名失效的情況下,有人使用同一個URL再次訪問,則會被時間戳超時機(jī)制攔截。這就是為什么要求時間戳的超時時間要設(shè)定為跟時間戳的超時時間一致。拒絕重復(fù)調(diào)用機(jī)制確保URL被別人截獲了也無法使用(如抓取數(shù)據(jù))。

整個流程如下:

??? 1、客戶端通過用戶名密碼登錄服務(wù)器并獲取Token

??? 2、客戶端生成時間戳timestamp,并將timestamp作為其中一個參數(shù)

??? 3、客戶端將所有的參數(shù),包括Token和timestamp按照自己的算法進(jìn)行排序加密得到簽名sign

??? 4、將token、timestamp和sign作為請求時必須攜帶的參數(shù)加在每個請求的URL后邊(http://url/request?token=123&timestamp=123&sign=123123123)

??? 5、服務(wù)端寫一個過濾器對token、timestamp和sign進(jìn)行驗證,只有在token有效、timestamp未超時、緩存服務(wù)器中不存在sign三種情況同時滿足,本次請求才有效

在以上三中機(jī)制的保護(hù)下,

如果有人劫持了請求,并對請求中的參數(shù)進(jìn)行了修改,簽名就無法通過;

如果有人使用已經(jīng)劫持的URL進(jìn)行DOS攻擊,服務(wù)器則會因為緩存服務(wù)器中已經(jīng)存在簽名或時間戳超時而拒絕服務(wù),所以DOS攻擊也是不可能的;

總結(jié)

以上是生活随笔為你收集整理的api接口安全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。