2009-11-10 64 views
2

后我在登录页有一个ASP.Net应用程序我称之为ASP.Net会话变成无效注销

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

但是Appscan能够走的是ASPXAUTH cookie的值,然后注销后能够重新注入cookie值以访问受保护的页面。

微软已经承认问题,但只提供建议不修复 - http://support.microsoft.com/kb/900111

有人可以提供例子来说明如何解决这个问题

回答

3

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

+0

我认为这就是为什么我会尝试使用会话对象而不是数据库表。我不能相信这仍然是ASP.Net的问题,当然这是一个巨大的安全问题 – Jon 2009-11-11 09:10:11

0

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

演练没有退出清除会话值: 用户访问登录页 - 产生的ViewState 人在这方面的中间人黑客收集的ViewState

用户提交登录表单 - 生成AUTH饼干 人在这方面的 - 中间黑客收集权威性饼干

用户注销 - 服务器清除用户的cookies 人在这方面的中间人黑客继续使用以前的凭据完全不受阻碍地 游戏结束

演练机智会话值清零退出: 用户访问登录页 - 产生的ViewState 人在这方面的中间人黑客收集的ViewState

用户提交登录表单 - 生成AUTH饼干 人在的,中等黑客收集AUTH饼干

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