클라이언트가 서버 인터페이스에 요청하는 경우 요청 정보가 암호화되어 요청 패키지를 제3자가 가로채더라도 제3자가 데이터를 해독하여 얻을 수는 없지만 요청 패키지를 반복적으로 사용할 수 있습니다. 처리 중입니다. 서버가 재생 공격을 막지 못하면 서버에 대한 부담이 커지고 데이터가 무질서해지게 됩니다. 이 문제는 타임스탬프를 추가하여 해결할 수 있습니다.
private readonly string TimeStamp = ConfigurationManager.AppSettings["TimeStamp"];//配置时间戳 [HttpPost] public ActionResult TestApi() { string RequestTime = Request["rtime"]; //请求时间经过RSA签名 try { //请求时间RSA解密后加上时间戳的时间即该请求的有效时间 DateTime Requestdt = DateTime.Parse(RSACryptoProvider.Decrypt(RequestTime, RSA_Keys.Private)).AddMinutes(int.Parse(TimeStamp)); DateTime Newdt = DateTime.Now; //服务器接收请求的当前时间 //if 请求的有效时间 < 现在服务器接受请求的时间 即该请求失效 if (Requestdt < Newdt) { return Json(new { success = false, message = "该请求已经失效" }); } else { //进行其他操作 } } catch (Exception ex) { return Json(new { success = false, message = "请求参数不和要求" }); } }
위 내용은 재생 공격을 방지하기 위해 .NET에 타임스탬프를 추가하는 내용입니다. PHP 중국어 웹사이트(www.php.cn)!