【问题标题】:ASP.Net Session Not Invalidated After Logout注销后 ASP.Net 会话未失效
【发布时间】:2009-11-10 18:06:04
【问题描述】:

我在我调用的登录页面中有一个 ASP.Net 应用程序

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

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

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

有人可以提供如何解决此问题的示例

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我想这就是为什么我会尝试使用 Session 对象而不是 DB 表的原因。我不敢相信这仍然是 ASP.Net 的问题,这肯定是一个巨大的安全问题
    【解决方案2】:

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-14
      • 2015-06-30
      • 2015-08-14
      • 1970-01-01
      • 2021-03-09
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      相关资源
      最近更新 更多