c# - 即使不使用会话,用户数据也会被交换 - asp.net mvc
问题描述
当多个用户登录网站时,所有先前登录的用户都可以看到最后登录的用户详细信息。这导致了严重的漏洞问题。
我没有使用任何会话变量来存储用户数据,一旦用户登录到我的网站,我会将他的 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; }
}
}
解决方案
您将此类的字段声明为静态。这意味着 UserData 类的每个实例在这些字段中都将具有相同的值。
请参阅此处有关 static 关键字的文档,当您设置这些值时,您为程序中仍然存在的每个实例设置相同的值。
您需要删除 static 关键字,但鉴于您实际上对这些字段没有任何用处,您可以删除它们并简单地更改您的类以使用自动实现的属性
public class UserData
{
public int user_id {get;set;}
public string user_name {get;set;}
public string user_email {get;set;}
}
推荐阅读
- google-chrome - 如何在不属于您的站点上的浏览器中处理 WebSocket?
- oracle - Oracle Text - 索引文档,其中每个文档都有多种语言突变
- assembly - 无效的注册
- javascript - 输入焦点更改时 KeyboardAvoidinView 不起作用
- asp.net - 为什么 ASP.net 身份验证模板不包含 Redux 和 React?
- python - 即使在我关闭 python 程序后,如何保持计数保持在正确的数字上
- python - SQLAlchemy 完整性错误唯一约束失败:users.login
- python - TypeError:__str__ 在 Django 中返回非字符串(类型 NoneType)
- javascript - 将数组值复制到多个数组
- c++ - 渲染多个网格(相同的 VBO)+ 相同 EBO 中的所有索引(OpenGL)