【问题标题】:Validate sessions in ASP.NET Core MVC在 ASP.NET Core MVC 中验证会话
【发布时间】:2021-05-26 08:53:14
【问题描述】:

我有一个使用 C# 编写的 ASP.NET Core 5 MVC 开发的应用程序。我正在使用 OTP 验证来启用对以下突出显示的页面的访问:

public const string SessionKeyName = "CurrentOTP";

public IActionResult GenerateOTP(OTPData mydata)
{
    .
    .
    HttpContext.Session.SetString(SessionKeyName, mydata.OTP);
    return RedirectToAction("EnterOTP", "Home");
}

[HttpPost]
public JsonResult VerifyOTP(string otp,OTPData mydata2)
{
        bool result = false;

        if (string.IsNullOrEmpty(HttpContext.Session.GetString(SessionKeyName)))
        {
            HttpContext.Session.SetString(SessionKeyName, mydata2.OTP);
        }

        var sessionOTP = HttpContext.Session.GetString(SessionKeyName);

        if (otp == sessionOTP)
        {
            result = true;
        }

        return Json(result);
}

然而,我的问题是任何用户都可以通过在地址栏中输入完整的 URL 来访问任何网页。如何防止这种情况发生?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-core


    【解决方案1】:

    您可能应该在端点上使用[authorize] 属性,并通过使用services.AddAuthentication 在您的startup.cs 中配置服务来为您的网站添加某种形式的身份验证。 我实际上建议使用 azure OTP 并完全放弃您的自定义设置,因为 IT 安全的第一条规则是永远不要自己制作

    【讨论】:

      【解决方案2】:
      public const string SessionKeyName = "CurrentOTP";
      
      public IActionResult GenerateOTP(OTPData mydata)
      {
          .
          .
          HttpContext.Session.SetString(SessionKeyName, mydata.OTP);
          return RedirectToAction("EnterOTP", "Home");
      }
      

      以下方法的变化

      [HttpPost]
      public JsonResult VerifyOTP(string otp)
      {
              bool result = false;
      
              if (!string.IsNullOrEmpty(HttpContext.Session.GetString(SessionKeyName)))
              {
                  var sessionOTP = HttpContext.Session.GetString(SessionKeyName);
                  
                  if (otp == sessionOTP)
                  {
                      result = true;
                  }
              }
              return Json(result);        
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-19
        • 1970-01-01
        • 2020-03-31
        • 1970-01-01
        • 2019-07-14
        • 1970-01-01
        • 2012-01-20
        • 1970-01-01
        相关资源
        最近更新 更多