2011-11-29 46 views
0

我们遇到了一个奇怪的情况。表单验证:在会话期间用户已更改

用户 “A” 登录到我们的网络系统(ASP.NET MVC,窗体身份验证),在工作一段时间,然后他的用户名改为 “B”

IIS日志:

2011-11-29 05:59:26 GET/PlacementOrder/- 80 [email protected] 191.114.62.70 Mozilla/4.0 + 200 0 0 2118 2011-11-29 05:59:26 POST/PlacementOrder/Index_GetData - 80 [email protected] 191.114.62.70 Mozilla/4.0 + 200 0 0 551

这种情况非常重要 - 用户无法看到其他人的数据。

有没有人有任何想法?请!

最后:
我们已经确定这是一个在ASP.NET,IIS或其他地方的漏洞。我们在Application_AuthenticateRequest和AuthCookie.UserData中添加了对IP的额外检查。

谢谢你帮助我们!

+0

你确定它是同一个人,你是基于IP还是一个报告这个问题的用户?可以看到办公室/建筑物中的用户来自相同的IP地址。 –

+0

用户报告了问题。用户“A”和“B”在不同的办公室工作,拥有不同的IP。我们在调查过程中完成了这项工作。 –

回答

0

我有几个可能的想法:

1)应用程序提供了一个功能,用户名的变化和使用此功能

2)给定用户的给定用户访问数据库,并跑了几个命令。其中一个命令是他/她的用户名的更改

3.)应用程序的测试人员/开发人员更改了给定用户的用户名。

最危险的可能性是第二个。如果是这种情况,则问题可能是缓冲区溢出攻击,SQL注入或感染造成的。编号:

我明白了。那么,用户名是数据库中的一个表的字段。用户是您的一个表的一行或连接的更多表的行。我的答案中提到的3种可能性仍然存在,还有另一种可能性。

4.)它也可能是应用程序中的一个错误,也许是以错误的方式识别用户实体并获得另一个用户。例如,UserID = 1,Name ='John Smith'; UserID = 2,Name ='John Smith'。 UserID = 1和UserID = 2具有相同的名称,但它们是不同的实体。这可能甚至是错误识别的情况。

+0

感谢您的回复!但改变了用户,不仅用户名。用户A和B存在于数据库中,但获得B.会话B. –

+0

对不起,我误解了这个问题,但我已经编辑了答案。 –

1

这可能是由缓存服务器(或代理)上的页面引起的。

场景:
UserB请求第X页,它被缓存在服务器上,然后UserA请求第X页,服务器将它从缓存中传递,同时用户的名称也被缓存。