以下代码在多用户web应用程序中安全吗?

本文关键字:安全 应用程序 web 代码 多用户 | 更新日期: 2023-09-27 18:13:52

如果不是,有没有办法使其安全?尽管它用session中的东西填充类成员但公共类不是静态的吗?这意味着当多个用户同时访问应用程序时,类/成员可能会来回反弹……对吧?我错过了什么?

摘自@M4N: https://stackoverflow.com/a/621620/158050


public class MySession
{
    // private constructor
    private MySession()
    {
      Property1 = "default value";
    }
    // Gets the current session.
    public static MySession Current
    {
      get
      {
        MySession session =
          (MySession)HttpContext.Current.Session["__MySession__"];
        if (session == null)
        {
          session = new MySession();
          HttpContext.Current.Session["__MySession__"] = session;
        }
        return session;
      }
    }
    // **** add your session properties here, e.g like this:
    public string Property1 { get; set; }
    public DateTime MyDate { get; set; }
    public int LoginId { get; set; }
}

这个类在ASP中存储它自己的一个实例。. NET会话,允许你从任何类中以类型安全的方式访问会话属性,例如:

int loginId = MySession.Current.LoginId;
string property1 = MySession.Current.Property1;
MySession.Current.Property1 = newValue;
DateTime myDate = MySession.Current.MyDate;
MySession.Current.MyDate = DateTime.Now;

以下代码在多用户web应用程序中安全吗?

尽管MySession.Current是静态的,但它并不直接存储数据。相反,它使用特定于每个用户会话的HttpContext.Current.Session,因此它与HttpContext.Current.Session对象通常一样安全。

相关文章: