[英]Validate sessions in ASP.NET Core MVC
我有一个使用 ASP.NET Core 5 MVC 开发的应用程序,用 C# 编写。 我正在使用 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 即可访问任何网页。 我该如何防止这种情况?
您可能应该在端点上使用[authorize]
属性,并通过使用 services.AddAuthentication 在您的 startup.cs 中配置services.AddAuthentication
来向您的网站添加某种形式的身份验证。 我实际上建议使用azure OTP并完全放弃您的自定义设置,因为 IT 安全的第一条规则是永远不要自己制作
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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.