拒絕接口裸奔!開放API接口簽名驗證!
點擊上方?好好學(xué)java?,選擇?星標(biāo)?公眾號
重磅資訊、干貨,第一時間送達(dá)
重磅資訊、干貨,第一時間送達(dá)
今日推薦:硬剛一周,3W字總結(jié),一年的經(jīng)驗告訴你如何準(zhǔn)備校招!
個人原創(chuàng)100W+訪問量博客:點擊前往,查看更多
個人原創(chuàng)100W+訪問量博客:點擊前往,查看更多
作者:Joker_Coding
來源:r6d.cn/kChH
請求身份是否合法?
請求參數(shù)是否被篡改?
請求是否唯一?
AccessKey&SecretKey (開放平臺)
請求身份
防止篡改
按照請求參數(shù)名的字母升序排列非空請求參數(shù)(包含AccessKey),使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串stringA; 在stringA最后拼接上Secretkey得到字符串stringSignTemp; 對stringSignTemp進(jìn)行MD5運算,并將得到的字符串所有字符轉(zhuǎn)換為大寫,得到sign值。
重放攻擊
實現(xiàn)
http://api.test.com/test?name=hello&home=world&work=java生成當(dāng)前時間戳timestamp=now和唯一隨機(jī)字符串nonce=random 按照請求參數(shù)名的字母升序排列非空請求參數(shù)(包含AccessKey) stringA="AccessKey=access&home=world&name=hello&work=java×tamp=now&nonce=random";拼接密鑰SecretKey stringSignTemp="AccessKey=access&home=world&name=hello&work=java×tamp=now&nonce=random&SecretKey=secret";MD5并轉(zhuǎn)換為大寫 sign=MD5(stringSignTemp).toUpperCase();最終請求 http://api.test.com/test?name=hello&home=world&work=java×tamp=now&nonce=nonce&sign=sign;

Token&AppKey(APP)
Token身份驗證
用戶登錄向服務(wù)器提供認(rèn)證信息(如賬號和密碼),服務(wù)器驗證成功后返回Token給客戶端; 客戶端將Token保存在本地,后續(xù)發(fā)起請求時,攜帶此Token; 服務(wù)器檢查Token的有效性,有效則放行,無效(Token錯誤或過期)則拒絕。 安全隱患:Token被劫持,偽造請求和篡改參數(shù)。
Token+AppKey簽名驗證
實現(xiàn)

后續(xù)請求
和上述開放平臺的客戶端行為類似,把AccessKey改為token即可。

推薦文章
原創(chuàng)電子書
歷時整整一年總結(jié)的?Java 面試 + Java 后端技術(shù)學(xué)習(xí)指南,這是本人這幾年及校招的總結(jié),各種高頻面試題已經(jīng)全部進(jìn)行總結(jié),按照章節(jié)復(fù)習(xí)即可,已經(jīng)拿到了大廠offer。
原創(chuàng)思維導(dǎo)圖
掃碼或者微信搜?程序員的技術(shù)圈子?回復(fù)?面試?領(lǐng)取原創(chuàng)電子書和思維導(dǎo)圖。
評論
圖片
表情



