注销后ASP.Net会话未失效

时间:2009-11-10 18:06:04

标签: asp.net asp.net-membership forms-authentication

我的登录页面中有一个ASP.Net应用程序,我打电话

FormsAuthentication.SignOut 
Session.Abandon() 
Session.Clear() 

但是,在注销能够重新注入cookie值以获取对受保护页面的访问权限之后,Appscan将获取ASPXAUTH cookie值。

Microsoft已承认存在问题但仅提供建议而不是修复 - http://support.microsoft.com/kb/900111

有人可以举例说明如何解决此问题

2 个答案:

答案 0 :(得分:3)

一个选项是拥有一个UserSession表,并在用户登录时将记录插入此表中。当您注销时,删除该条目或将其标记为无效。在安全页面上,验证登录用户是否存在UserSession,如果不存在则重定向到登录页面。

答案 1 :(得分:0)

在登录时设置会话值,在注销时清除它并在每次访问安全页面时检查它。会话值不会发送到客户端,因此客户端/攻击者无法操纵它。

退出时没有清除会话值的演练: 用户访问登录页面 - 生成viewstate 中间人黑客收集视图状态

用户提交登录表单 - 生成身份验证cookie 中间人黑客收集身份验证cookie

用户注销 - 服务器清除用户cookie 中间人黑客继续完全不受阻碍地使用以前的凭证 游戏

退出时清除了演练会话值: 用户访问登录页面 - 生成viewstate 中间人黑客收集视图状态

用户提交登录表单 - 生成身份验证cookie 中间人黑客收集身份验证cookie

用户注销 - 服务器清除用户cookie并将其内部会话标志值设置为null 中间人黑客继续使用以前的凭据,但因为他现在正在使用的会话具有值null服务器重定向到登录页面。 赢了!