gpt4 book ai didi

Asp.net MVC 在 Session 中保留敏感信息是否安全?

转载 作者:行者123 更新时间:2023-12-04 23:57:56 24 4
gpt4 key购买 nike

我的 Asp.net MVC 网站上有一个基本的身份验证系统

[HttpPost]
public ActionResult Login(LoginViewModel model, string returnUrl)
{
WebSecurity.Login(model.UserName, model.Password, persistCookie: false)

return RedirectToAction("Index", "Home");
}

我也有 UserInfoViewModel我保留一些用户特定信息的类,并在不同的页面上使用它。

避免创建 UserInfoViewModel每次我需要它时,我都想将它保存在登录方法的 session 中。
public ActionResult Login(LoginViewModel model, string returnUrl)
{
WebSecurity.Login(model.UserName, model.Password, persistCookie: false)
var userInfoViewModel = new UserInfoViewModel();
Session["userInfo"] = userInfoViewModel;

return RedirectToLocal(returnUrl);
}

考虑到我在内部有依赖的敏感信息 UserInfoViewModel , 喜欢 IsSuperuser , 将该对象保存在 Session 中是否安全?当用户登录 session 过期时它也会过期吗?

解决方案
System.Security.Principal.IIdentity正是为此而生。它将您需要的自定义用户信息保存在 AUTH cookie 中,因此您不必每次都重新计算。

Use Custom Principal Objects video turorial

谢谢你的回答!

最佳答案

是的,它是安全的,因为 Session 存储在服务器上。但是,如果您决定使用 ASP.NET session ,您应该考虑另一个问题。如果此 session 存储在 Web 服务器的内存中(默认),IIS 可以随时回收您的应用程序,您将丢失此 session 数据。另一方面,用户仍将通过身份验证,因为他会被表单例份验证 cookie 跟踪,该 cookie 仍将被发送。因此,如果您想使用 Sessions,我建议您切换到进程外 session 提供程序(例如 StateServerSQLServer )。

同样正如@Mikeb 在评论部分指出的那样,Session 存在另一个非常严重的问题。如果您为给定 Controller 启用读写模式,您将无法并行处理来自同一 session 的多个请求。服务器将依次阻塞和处理它们。例如,来自同一个 session 的多个 AJAX 请求。它们都将依次阻塞和处理。

关于Asp.net MVC 在 Session 中保留敏感信息是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14773598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com