我网站的一些用户与我联系并说他们有问题要查看他们的信息。问题是他们看到其他用户的信息! 我通过asp.net mvc 3和asp.net会员开发了我的网站。当我用该用户名和密码登录时,一切正常。我认为发生了类似ISP现金或网络现金的事情!因为其他用户没有任何问题。我检查我的代码,没有问题找到!
答案 0 :(得分:0)
ISP缓存或网络缓存不会导致此问题。您应该在代码中搜索此问题。也认证方法不负责这个问题。
问题可能是因为会话或cookie过期。当会话到期时,您的应用可能会查找默认数据(例如,形成其他用户角色)并显示它。所以应该在你的应用程序中寻找这样的安全漏洞。
另一个问题可能是因为代码或asp.net缓存中的缓存问题!缓存用户数据并将其显示给其他用户!
答案 1 :(得分:0)
我曾经在ASP.NET页面上发生过类似的事情。原来问题是我在其中一个页面上启用了缓存,因此用户可以看到以前用户的信息。
答案 2 :(得分:0)
最可能的情况是您在服务器端缓存结果而不是由用户更改缓存的信息。您需要通过与用户或用户自己相关的参数来改变缓存(使用VaryByCustom)。
示例:
[AuthorizeByUser( Roles = "Admin" )]
[OutputCache( Location = OutputCacheLocation.Server, VaryByParam="*", Duration = 500 )]
public ActionResult Profile( int id )
{
...
}
此处所有参数的变化意味着id参数的每个值都将具有不同的缓存条目。这里我们假设id与用户的id相关(可能是),因此每个用户将拥有不同的缓存条目。请注意,您还需要设置安全性(AuthorizeByUserAttribute),以便它不会向未经授权的用户提供缓存结果。这里我假设从AuthorizeAttribute派生的实现,它验证用户是否处于“Admin”角色,或者具有与方法签名中的id相关的用户id。请参阅我关于如何执行此操作的自定义授权的博文:http://farm-fresh-code.blogspot.com/2011/03/revisiting-custom-authorization-in.html。