如過客戶端在向服務端介面進行請求,如果請求信息進行了加密處理,被第三方截取到請求包,雖然第三方無法解密獲取其中的數據,但是可以使用該請求包進行重覆的請求操作。如果服務端不進行防重放攻擊,就會參數伺服器壓力增大,數據紊亂的後果。而使用添加時間戳的方式可以解決這一問題。 ...
如過客戶端在向服務端介面進行請求,如果請求信息進行了加密處理,被第三方截取到請求包,雖然第三方無法解密獲取其中的數據,但是可以使用該請求包進行重覆的請求操作。如果服務端不進行防重放攻擊,就會參數伺服器壓力增大,數據紊亂的後果。而使用添加時間戳的方式可以解決這一問題。
1 private readonly string TimeStamp = ConfigurationManager.AppSettings["TimeStamp"];//配置時間戳 2 [HttpPost] 3 public ActionResult TestApi() 4 { 5 string RequestTime = Request["rtime"]; //請求時間經過RSA簽名 6 try 7 { 8 //請求時間RSA解密後加上時間戳的時間即該請求的有效時間 9 DateTime Requestdt = DateTime.Parse(RSACryptoProvider.Decrypt(RequestTime, RSA_Keys.Private)).AddMinutes(int.Parse(TimeStamp)); 10 DateTime Newdt = DateTime.Now; //伺服器接收請求的當前時間 11 //if 請求的有效時間 < 現在伺服器接受請求的時間 即該請求失效 12 if (Requestdt < Newdt) 13 { 14 return Json(new { success = false, message = "該請求已經失效" }); 15 } 16 else 17 { 18 //進行其他操作 19 } 20 } 21 catch (Exception ex) 22 { 23 return Json(new { success = false, message = "請求參數不和要求" }); 24 } 25 }