当多个用户登录到网站时,所有先前登录的用户都可以看到最后登录的用户详细信息。这导致了严重的漏洞问题。
相反,我在存储用户数据时不使用任何会话变量,一旦用户登录我的网站,我会将其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; }
}
}
答案 0 :(得分:5)
您将此类的字段声明为静态。这意味着类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;}
}