【问题标题】:User data getting swapped even without using sessions - asp.net mvc即使不使用会话,用户数据也会被交换 - asp.net mvc
【发布时间】:2019-09-04 07:32:21
【问题描述】:

当多个用户登录网站时,所有以前登录的用户都可以看到最后登录的用户详细信息。这导致了严重的漏洞问题。

我没有使用任何会话变量来存储用户数据,一旦用户登录我的网站,我会将他的 acc 详细信息保存在帮助程序类文件中,如下所示。 在我的所有其他页面中,我正在使用获取 UserData.userid、UserData.username 等用户详细信息...

public class UserData
    {
        public static int userid;
        public static string username;
        public static string useremail;

        public int user_id
        {
            get { return userid; }
            set { userid = value; }
        }

        public string user_name
        {
            get { return username; }
            set { username = value; }
        }

        public string user_email
        {
            get { return useremail; }
            set { useremail = value; }
        }
}

【问题讨论】:

  • 您实际上只有一个登录用户,即最后一个登录用户。无论您实例化该类的多少个实例,它们都具有相同的用户 ID。

标签: c# asp.net asp.net-mvc user-accounts


【解决方案1】:

您将此类的字段声明为静态。这意味着 UserData 类的每个实例在这些字段中都将具有相同的值。
See here documentation about the static keyword 当您设置这些值时,您为程序中仍然存在的每个实例设置相同的值。

您需要删除 static 关键字,但考虑到您实际上对这些字段没有任何用途,您可以删除它们并简单地将您的类更改为使用 auto implemented properties

public class UserData
{
    public int user_id {get;set;}
    public string user_name {get;set;}
    public string user_email {get;set;}
}

【讨论】:

  • 而且由于 OP 没有使用会话,他们需要找到某个地方来存储这个类的实例,该实例也不是静态本身
  • @pinkfloydx33 - 有什么建议吗?
  • 有什么理由不使用 Sessions?这是 Asp.Net MVC 还是 ASP.NET 应用程序?
  • 嗨@史蒂夫。那是客户的要求,不要:-(。它的。Asp.Net MVC
  • 这里有一个关于会话问题的非常长且描述性的 QA。 stackoverflow.com/questions/23419011/…Cookie 似乎是答案
猜你喜欢
  • 2011-07-27
  • 2012-04-15
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-16
  • 1970-01-01
相关资源
最近更新 更多