ホームページ  >  記事  >  バックエンド開発  >  .NET はリプレイ攻撃を防ぐためにタイムスタンプを追加します

.NET はリプレイ攻撃を防ぐためにタイムスタンプを追加します

黄舟
黄舟オリジナル
2017-02-22 10:34:062249ブラウズ

クライアントがサーバーインターフェースにリクエストを行った場合、リクエスト情報が暗号化されており、リクエストパッケージが第三者によって傍受された場合、第三者は復号化してデータを取得することはできませんが、リクエストパッケージを使用して繰り返しリクエストを実行することができますオペレーション。 。サーバーがリプレイ攻撃を防止しない場合、サーバーへの負荷が増大し、データが乱れてしまいます。この問題は、タイムスタンプを追加することで解決できます。

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 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。