我们遇到了一个奇怪的案例。
用户“A”登录我们的网络系统(ASP.NET MVC,Forms Auth),工作了一段时间,然后他的用户名改为“B”
IIS日志:
2011-11-29 05:59:26 GET / PlacementOrder / - 80 userA@mail.com 191.114.62.70 Mozilla / 4.0 + 200 0 0 2118 2011-11-29 05:59:26 POST / PlacementOrder / Index_GetData - 80 userB@mail.com 191.114.62.70 Mozilla / 4.0 + 200 0 0 551
这种情况非常关键 - 用户无法看到其他人的数据。
有没有人有任何想法?请!
最后:
我们已经确定它是ASP.NET,IIS或其他任何地方的错误。我们在Application_AuthenticateRequest和AuthCookie.UserData中添加了对IP的额外检查。
感谢您帮助我们!
答案 0 :(得分:1)
这可能是由于在服务器(或代理)上缓存页面引起的。
方案:
UserB请求页面X,它缓存在服务器上,然后UserA请求页面X,服务器从缓存中传递它,用户名也被缓存。
答案 1 :(得分:0)
我有一些可能的想法:
1。)应用程序提供了用户名更改功能,并且给定用户使用了此功能
2.)给定用户访问数据库并运行一些命令。其中一个命令是更改他/她的用户名
3。)应用程序的测试人员/开发人员更改了给定用户的用户名。
最危险的可能性是第二个。如果是这种情况,问题可能是缓冲区溢出攻击,SQL注入或感染的结果。
编辑:
我明白。那么,用户名是数据库中某个表的字段。用户是您的一个表的一行或更多表的连接行。我的答案中提到的3种可能性仍然存在,还有另一种可能性。
4。)它也可能是应用程序中的一个错误,可能以错误的方式识别用户实体并获得另一个用户。例如,UserID = 1,Name ='John Smith'; UserID = 2,Name ='John Smith'。 UserID = 1和UserID = 2具有相同的名称,但它们是不同的实体。这甚至可能是错误识别的情况。