当我们在任何ASP.NET框架(ASP.NET MVC,Web窗体等)中使用ASP.NET窗体身份验证时,我们将身份验证Cookie保存在客户端的浏览器中。作为最佳做法,我们将Cookie设置为HttpOnly并保密。我们还通过SSL进行所有交易。无论我们使用哪种机制对用户进行身份验证(OAuth,ASP.NET会员提供程序等),我们仍然需要持续进行身份验证才能获得更好的用户体验。ASP.NET窗体身份验证和持久性身份验证Cookie安全
随着所有这些,我假设有人仍然可以从客户端浏览器获取cookie并使用这些auth cookie值发出请求。这不能被服务器检测到,我们会将受保护的数据提供给其他人。
一个人想到要降低风险,这里是每当他/她尝试采取一些严肃的行为(例如更改电子邮件地址,访问个人资料信息等)时询问客户的密码,但是这个没有解决任何问题,可能会让客户非常讨厌。
您是否有任何方法可以针对此类问题积极处理?或者什么是在客户端浏览器中坚持认证的最佳方式?
感谢特洛伊,非常好的回答和很好的建议。我应该承认,我忽视了将'slidingexpiration'设置为'false'。我假设这使得过期票不能重新激活。这也给系统增加了一个信心。你怎么看? – tugberk 2012-08-03 09:36:31
滑动过期在启动时的作用是将会话超时应用于*上次请求*,但当它关闭时,会将其应用于*会话的开始*。假设你有20分钟的超时时间,并积极使用系统10分钟。当滑动到期时间为*时,超时将在30分钟后发生。当它关闭*超时将发生在20分钟。关闭它会减少劫持帐户的机会窗口,但会对可用性产生不利影响。如果你的系统是人们进入的系统,那就快速做他们需要的东西,然后离开,把它关掉。 – 2012-08-03 10:05:46
然后,无论哪种方式,过期的auth cookie都无法使用并重新激活,对吧? – tugberk 2012-08-03 10:13:48