【发布时间】:2012-09-24 09:24:05
【问题描述】:
我正在使用 ASP.Net MVC3 和 IIS 7.0。在我的网站上,我已经通过 https (requireSSL="true") 实现了表单身份验证。我为 .ASPXAUTH cookie 设置了一些过期日期(例如 5 天)。一切正常,但是从一个浏览器成功登录后,我可以将 cookie .ASPXAUTH 复制(没有问题)到另一个浏览器或另一台计算机,然后在没有登录名和密码的情况下进入我的网站。
如何才能使我只能从浏览器或我输入登录密码的计算机访问该站点,而无法从我复制了 .ASPXAUTH cookie 的其他浏览器访问?
提前致谢,Olexiy
【问题讨论】:
-
这比某人访问已登录用户的计算机并通过其 Web 浏览器访问您的站点更具安全风险。如果他们有权获取 cookie,那么他们也可以访问 Web 浏览器并可以进入。在我看来,风险不在于复制 cookie。风险在于您在 cookie 上设置了如此长的过期时间。
-
谢谢凯文。但是,例如,谷歌已经为 Gmail 实现了这一点。你知道他们是怎么做到的吗?
-
Google 对其所有应用程序和第三方应用程序都使用 OAuth 和 OpenID。您可以保持登录到 Google 帐户,但我尚未验证您不能复制 cookie。如果您无法从 Google 帐户复制 cookie,那么它们可能使用了 @Zoltan 建议的技术。但正如我和 Dimitrov 所说,复制 cookie 没有风险。
-
感谢凯文的回答。
标签: .net asp.net-mvc-3 c#-4.0 forms-authentication