token(長度3-32字元)、
加密秘鑰(43位字元組成)
加密簽名(token、時間戳、隨機數)
引數說明
引數 說明
access_token 獲取到的憑證
expires_in 憑證有效時間,單位:秒
使用rsa和aes設計http api介面傳輸:
傳送方:
1.生成簽名
(1)將傳輸物件轉換成json字串
(2)使用md5生成json字串摘要
(3)使用rsa公鑰對摘要字串作加密處理,生成簽名。
2.加密請求報文
建立http請求時動態生成乙個aeskey,用來對請求資料加密。
3.使用rsa公鑰加密aes秘鑰
4.構造http請求
(1)簽名欄位authencation
(2)加密後的aes秘鑰securitykey
(3)時間戳timestamp
(4)加密報文http body中
×tamp=13265322¶m=http body中
接收方:
1.驗證時間戳
請求時間和系統時間間隔在5分鐘內請求為合法,否則非法。
2.獲取被rsa加密的aes秘鑰
使用rsa秘鑰解密securtiykey欄位,獲取解密後的aes秘鑰
3.獲取請求報文
從httpbody中獲取請求報文,使用解密後的aes秘鑰對報文解密
4.驗籤
(1)對解密的報文使用md5生成摘要
(2)使用rsa秘鑰對authencation欄位解密,與md5生成的摘要對比是否一致,一致則通過驗籤,否則不通過
5.返回處理結果
使用第二步解密後的aes秘鑰加密返回結果,請求方使用aes解密即可,
這樣真實的aes秘鑰傳輸中不會被知道。
**示例:
1.aeshelper
public class aeshelper
/// /// aes解密
///
/// 密文
/// 金鑰
/// /// 時間戳
///
public class timestamphelper
/// /// 將c# datetime時間格式轉換為unix時間戳格式
///
/// 時間
/// long
public static long convertdatetimetoint(system.datetime time)
/// /// 時間戳轉為c#格式時間
///
///
///
public static datetime convertstringtodatetime(string timestamp)
/// /// 時間戳轉為c#格式時間10位
///
/// unix時間戳格式
/// c#格式時間
public static datetime getdatetimefrom1970ticks(long curseconds)
/// /// 驗證時間戳
///
///
/// 差值(分鐘)
///
public static bool istime(long time, double interval)
else
}/// /// 判斷時間戳是否正確(驗證前8位)
///
///
///
public static bool istime(string time)
else
}}
//請求方
usermodel usermodel = new usermodel()
;//1.請求物件轉換成json
string jsoncontent = jsonconvert.serializeobject(usermodel);
//2.使用md5生成摘要
string md5content = md5helper.md5encrypt64(jsoncontent);
//生成rsa私鑰和公鑰
string generater = rsahelper.generatekeys();
rsahelper.privatekey = generater[0];
rsahelper.publickey = generater[1];
//3.使用rsa加密md5摘要,生成簽名
string signature = rsahelper.encryptstring(md5content, rsahelper.publickey);
//5.使用aes加密請求資料
string aeskey = guid.newguid().tostring("n");
string requestdata = aeshelper.encrypt(jsoncontent, aeskey);
//6.使用rsa加密aes秘鑰
string securitykey = rsahelper.encryptstring(aeskey, rsahelper.publickey);
//時間戳
long timestamp = timestamphelper.convertdatetimetoint(datetime.now);
httphelper.request(requestdata,"引數");
網際網路開發 HTTP介面安全設計
作為http介面的服務端,要能控制你本身自有資料的讀寫許可權。如果任何客戶端在任何時間都能讀寫你的資料,那麼使用者資料很容易被修改。這就好比沒加使用者登入就可以訪問和讀寫所有的系統資料。根本沒有安全性可言了。方案1 加密時間戳 可變的加密串 進行安全控制 原始請求 安全控制後的請求 tamp 543...
php api介面安全設計 sign
一.url請求的引數包括 timestamp,token,username,sign 1.timestamp 時間戮2.token 登陸驗證時,驗證成功後,生成唯一的token 可以為uuid 並把token儲存到快取 redis 裡 鍵為username,值為token 3.username 使用...
WebApi介面安全認證 HTTP之摘要認證
摘要訪問認證是一種協議規定的web伺服器用來同網頁瀏覽器進行認證資訊協商的方法。它在密碼發出前,先對其應用雜湊函式,這相對於http基本認證傳送明文而言,更安全。從技術上講,摘要認證是使用隨機數來阻止進行密碼分析的md5加密雜湊函式應用。它使用http協議。一 摘要認證基本流程 1.客戶端請求 無認...