拒絕接口裸奔!開放API接口簽名驗證!
來源:blog.csdn.net/qq_18495465/article/details/79248608_請求身份是否合法? 請求參數(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和唯一隨機字符串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即可。

評論
圖片
表情
