C# FormsAuthenticationTicket不能在服务器端失效。导致cookie应答攻击

C# FormsAuthenticationTicket不能在服务器端失效。导致cookie应答攻击,c#,asp.net,asp.net-membership,security,C#,Asp.net,Asp.net Membership,Security,我有一个使用表单成员身份验证的ASP.NET web应用程序。我们最近进行了渗透测试,发现一个问题是窃取用户帐户的能力。如果.ASPXAUTH cookie值是在注销之前从用户复制的,则用户可以作为其他用户登录,编辑其cookie以匹配复制的值并获取其所有特权 在注销时,我尝试过: 移除cookie。我可以成功地做到这一点,但它不会使FormsAuthenticationTicket无效 使用但发现它并不能阻止攻击 我个人不认为这是一个问题,我相信它可能被窃取的唯一方式是,如果一个用户设法访问一

我有一个使用表单成员身份验证的ASP.NET web应用程序。我们最近进行了渗透测试,发现一个问题是窃取用户帐户的能力。如果.ASPXAUTH cookie值是在注销之前从用户复制的,则用户可以作为其他用户登录,编辑其cookie以匹配复制的值并获取其所有特权

在注销时,我尝试过:

移除cookie。我可以成功地做到这一点,但它不会使FormsAuthenticationTicket无效

使用但发现它并不能阻止攻击

我个人不认为这是一个问题,我相信它可能被窃取的唯一方式是,如果一个用户设法访问一个经过身份验证的用户,这表示我需要解决这个问题以安抚渗透测试人员

任何想法都将不胜感激! 谢谢

注销时,我已尝试:删除cookie。
我可以成功地做到这一点,但它不会使FormsAuthenticationTicket无效

事实上,当你删除cookie时,你从你的用户那里删除了它-你不能取消激活它,所以如果有人得到它,他仍然可以使用它

解决办法可以是:

  • 同时在服务器上保存身份验证cookie的状态
  • 将已登录用户的状态与其会话连接
请在此处阅读更多信息:


而且

我认为唯一真正解决这个问题的方法是使用SSL来保护cookies


即使您在注销时做了一些使cookie服务器端无效的事情,这也不会阻止有人在合法用户仍然登录时重播cookie。这意味着任何其他解决方案都会使您易受攻击。可能不会太长时间,但会有一些窗口。

您实际上可以使令牌服务器端失效。基本上,ASP.NET提供了一种“使早于DATE-X的令牌失效”的简单方法,您只需在用户数据库中存储一些日期即可。例如,它可以是“上次密码更改日期”


在这里查看我的答案:

好吧,您可以做很多事情:使用SSL并禁用滑动过期,或者,更好的是,不要让它们持久化。看看这里,回答得很好。但是,第三个URL()无效。