Api接口簽名規則

 

公共傳遞參數json

參數名後端

類型服務器

必選app

描述函數

app_id string 調用方身份ID,接口提供方用此來識別調不一樣的調用者,該參數是API基本規範的一部分,請詳見API公共規範。
sign_type string 簽名類型:MD5,RSA2

sign編碼

string排序

是 token

一次接口調用的簽名值,服務器端 「防止 假裝請求/防篡改/ 防重發」 識別的重要依據。接口

timestamp字符串

Int

時間戳(long Timestamp = DateTime.Now.Ticks;)

 

method string /user/info.json

 

1.篩選並排序

獲取全部請求參數,不包括字節類型參數,如文件、字節流,剔除sign字段,剔除值爲空的參數,並按照第一個字符的鍵值ASCII碼遞增排序(字母升序排序),若是遇到相同字符則按照第二個字符的鍵值ASCII碼遞增排序,以此類推。

2.拼接

將排序後的參數與其對應值,組合成「參數=參數值」的格式,而且把這些參數用&字符鏈接起來,此時生成的字符串爲待簽名字符串。

 

3.調用簽名函數

使用各自語言對應的SHA256WithRSA(對應sign_type爲RSA2)或SHA1WithRSA(對應sign_type爲RSA)簽名函數利用商戶私鑰對待簽名字符串進行簽名,並進行Base64編碼。

4.把生成的簽名賦值給sign參數,拼接到請求參數中。

 

 

後端代碼能夠增長一個時間戳的時效性判斷,好比時間戳必須是當前時間的先後半小時內(可與token的過期機制一致,若是涉及到資金,可能還要縮短期限制,而且在業務上還要作調整,好比轉帳,先生成一個轉帳訂單,而後再發起一個轉帳請求,判斷是否已轉帳,這樣能夠防止重複提交攻擊,若是是app,還能夠增長登陸會話中提交有效),這樣能夠防止重複提交攻擊。

 

 每次請求目標接口前,先使用簽名的方法,獲取一個驗證碼(基於會話,這個驗證碼在服務端的會話中,是一個指定的變量,同一會話,都是從這個變量中取),而後把這個驗證碼加入到目標接口參數中;由於驗證碼用事後就會換一個,目標接口請求完後,驗證碼失效,請求失敗,可防止重複提交攻擊。

相關文章
相關標籤/搜索