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

User data getting swapped even without using sessions - asp.net mvc

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

我没有使用任何会话变量来存储用户数据,一旦用户登录到我的网站,我就会将他的 acc 详细信息保存在辅助 class 文件中,如下所示。 在我的所有其他页面中,我正在使用获取用户详细信息,例如 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; }
        }
}

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

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

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