Wenn der Client eine Anfrage an die Serverschnittstelle stellt, die Anfrageinformationen verschlüsselt sind und das Anfragepaket von einem Dritten abgefangen wird, kann der Dritte das Anfragepaket für wiederholte Zwecke verwenden, obwohl der Dritte die Daten nicht entschlüsseln und erhalten kann Bearbeitung anfordern. Wenn der Server Replay-Angriffe nicht verhindert, erhöht sich der Druck auf den Server und die Daten werden gestört. Dieses Problem kann durch Hinzufügen eines Zeitstempels gelöst werden.
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 = "请求参数不和要求" }); } }
Das Obige ist der Inhalt des Hinzufügens eines Zeitstempels zu .NET, um Wiederholungsangriffe zu verhindern. Für weitere verwandte Inhalte zahlen Sie bitte Achtung auf die chinesische PHP-Website (www.php.cn)!