“在这台电脑上记住我”
通过查看Gmail的Cookie,可以轻松查看“记住我”Cookie中存储的内容。 用户名/一次性访问令牌。 在用户名是秘密的情况下,它可以以不同的方式实施。 但无论如何...这件事不是非常高的安全性:你偷了饼干,你准备好了。
然而,我的问题是在功能方面:你什么时候擦掉他们的访问令牌? 如果用户在没有点击另一台机器上的“记住我”的情况下登录,是否应该让所有机器上的访问令牌失效? 我在问,这是如何实施的,以及它应该如何实施。
我经常同时使用2台或3台机器,并在所有机器上“记住我”。 如果其中一人断开了其他非常烦人的人,所以我不会推荐它。
传统上它会使用超时,cookie会在一段时间后(或用户注销时)过期。
这一切都取决于您的安全模型。 如果你正在编写一个内部公司应用程序,你只希望一个用户在一台计算机上,那么你可能希望比gmail有更严格的限制。
另外,请记住拒绝服务的可能性 - 如果一台机器上的某个操作可能会强制另一台机器无法使用,则可能会用于防止合法用户在某些情况下回收控制权。
“持久登录最佳实践”和“持久登录最佳实践”文章是关于如何实现这种功能的绝佳参考。
另请参阅这些StackOverflow问题
从另一台计算机登录不应使与另一台计算机上的cookie关联的登录无效。 但是,如果用户注销或“不是你?在这里登录”,这应该清除用户正在工作的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
你可以阅读更多关于这个
上一篇: "Remember Me On This Computer"
下一篇: How should I choose an authentication library for CodeIgniter?