即使不使用会话,用户数据也会被交换 - asp.net mvc

问题描述 投票:0回答:1

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

我没有在存储用户数据时使用任何会话变量,一旦用户登录我的网站,我将他的acc详细信息保存在helper类文件中,如下所示。在我的所有其他页面中,我使用获取用户详细信息,如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; }
        }
}
c# asp.net asp.net-mvc username user-accounts
1个回答
5
投票

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

您需要删除静态关键字,但鉴于您对这些字段没有任何用处,您可以将其删除,只需更改您的类即可使用auto implemented properties

public class UserData
{
    public int user_id {get;set;}
    public string user_name {get;set;}
    public string user_email {get;set;}
}
© www.soinside.com 2019 - 2024. All rights reserved.