Si le client fait une requête à l'interface du serveur, si les informations de la requête sont cryptées et que le package de requête est intercepté par un tiers, bien que le tiers ne puisse pas déchiffrer et obtenir les données, il peut utiliser le package de requête à des fins répétées. traitement. Demander une action. Si le serveur n'empêche pas les attaques par rejeu, la pression sur le serveur augmentera et les données seront désordonnées. Ce problème peut être résolu en ajoutant un horodatage.
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 = "请求参数不和要求" }); } }
Ce qui précède est le contenu de l'ajout d'un horodatage à .NET pour empêcher les attaques par rejeu. Pour plus de contenu connexe, veuillez payer. attention au site PHP chinois (www.php.cn) !