[英]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.