“在这台计算机上记住我” – 它应该如何工作?

通过查看Gmail的Cookie,可以轻松查看“记住我”Cookie中存储的内容。 用户名/一次性访问令牌。 在用户名是秘密的情况下,它可以以不同的方式实现。 但是无论如何…这个东西不是非常高的安全性:你偷了cookies,你准备好了。

我的问题是在function方面,但是:什么时候你擦他们的访问令牌? 如果用户login而不点击另一台机器上的“记住我”,是否应该使所有机器上的访问令牌失效? 我在问,这是如何实施的,以及如何实施。

我经常同时使用2台或3台机器,并且在所有机器上都有“记住我”的记号。 如果其中一个断开了其他人,这将是非常烦人的,所以我不会推荐它。

传统上,它会使用超时,cookie会在一段时间后(或用户注销时)过期。

这一切都取决于你的安全模式。 如果你正在编写一个内部公司的应用程序,你只希望一个用户在一台计算机上,那么你可能希望比gmail有更严格的限制。

另外,请记住拒绝服务的可能性 – 如果一台机器上的某个操作可能会迫使另一台机器无法使用,则可以用来防止合法用户在某些情况下回收控制权。

“ 持久login最佳实践”和“ 持久login最佳实践”文章是如何实现这种function的很好的参考。

另请参阅这些StackOverflow问题

  • 什么是最好的方式来实现“记住我”的网站?
  • 权威网站authentication指南

从另一台计算机login不应使与另一台计算机上的cookie关联的login无效。 但是,如果用户注销或“不是你?在这里login”,这应该清除用户正在工作的cookie。

顺便说一句,通过坚持使用https并使之不用于脚本,可以使窃取cookie变得困难。

通过将“; HttpOnly”添加到您的Cookie的输出这将使cookie不可用的JavaScript例如

HTTP/1.1 200 OK Cache-Control: private Content-Type: text/html; charset=utf-8 Content-Encoding: gzip Vary: Accept-Encoding Server: Microsoft-IIS/7.0 Set-Cookie: ASP.NET_SessionId=ig2fac55; path=/; HttpOnly X-AspNet-Version: 2.0.50727 Set-Cookie: user=t=bfabf0b1c1133a822; path=/; HttpOnly X-Powered-By: ASP.NET Date: Tue, 26 Aug 2008 10:51:08 GMT Content-Length: 2838 

你可以阅读更多关于这个

  • 为.Net
  • Firefox支持
  • 杰夫 – 艰难的Codings,让我们去购物

记住我的cookie也应该标识机器。 它应该与机器有关,因为有些地方你想要被记住,而另外一些地方你不知道(家庭vs工作)。

到期date通常设置为合理的时间(两周),或者在用户明确从机器注销后,

我会做的是将每个会话链接到一个IP地址。 如果会话令牌是从一个不同的IP发送的,则拒绝它。

访问令牌应该是IP特定的,这样它们不能轻易地跨机器传输。

它们也应该以允许用户查看哪些机器上有活动令牌的方式来实现。

一旦在另一台计算机上创build了一个新的令牌,就select这种方式来终止一个令牌 – select让他们的用户不能在多台计算机上访问他们的服务 – 或者如果他们这么做 – 他们的使用certificate他们再次login。

您使用的策略确实取决于您所持有的数据和用户的需求。