專案中對外暴露的http介面的安全性如何保證

蟑螂恶霸的开发笔记發表於2024-06-27

1 介面提供方,在header中新增clientId,用於標識呼叫方來源

2 介面提供方,請求引數body中新增公共引數:nonce隨機值,可以用來防重,比如訪問過一次,下次直接攔截、timestamp用來進行請求時間的校驗,比如超過30秒的請求直接攔截,sign: 加密串

3 對body,進行加密,加密方式可以參考以下,這一步主要是為了防止引數被篡改

sign 簽名規則:介面需要引數按照字母自然排序,和secretKey引數使用:“:” 號進行拼接,在進行MD5加密的值則為sign引數值
例子:

1.請求引數:{"b":"001", "c": "002", "a": "003", "nonce": "005", "timestamp": 1716967553000}
2.secretKey值:eR3GwiFc5PjR7EK(由提供方頒發,需要與clientId進行匹配,使用方應妥善儲存不可洩露)
3.介面需要引數按照字母自然排序後請求引數值:{"a":"003","b":"001","c":"002","nonce":"005","timestamp":1716967553000}
4.生成加密的字串:{"a":"003","b":"001","c":"002","nonce":"005","timestamp":1716967553000}:eR3GwiFc5PjR7EK
5.進行MD5加密後sign引數值:3cb63afbc51f0f5311a5f5fe2053c000
6.講加密後的字串,作物入參裡的sign值,進行傳遞

相關文章