查看Gmail的Cookie,很容易看到“记住我”Cookie中存储的内容。用户名/一次访问令牌。在用户名是秘密的情况下,它可以以不同的方式实现。但无论如何......事情的安全性不是很高:你偷了饼干,你就准备好了。
我的问题是在功能方面,但是你什么时候擦拭他们的访问权限?如果用户在另一台计算机上登录而不点击“记住我”,是否应该在所有计算机上使其访问权限无效?我问的是传统上如何实现它,以及它应该如何实现。
答案 0 :(得分:20)
文章Persistent Login Best Practice和Improved Persistent Login Best Practice是如何实现此类功能的绝佳参考。
另请参阅这些StackOverflow问题
答案 1 :(得分:15)
我经常同时使用2台或3台机器,并在所有机器上“记住我”。如果其中一个断开其他会非常烦人的,所以我不推荐它。
传统上它会使用超时,cookie会在一段时间后(或用户退出时)过期。
这完全取决于您的安全模型。如果您正在编写一个内部公司应用程序,您只希望一个用户在一台计算机上,那么您可能希望拥有比gmail更严格的限制。
另外,请记住拒绝服务的可能性 - 如果一台计算机上的操作可能会迫使另一台计算机无法使用,则可能会阻止合法用户在某些情况下取回控制权。
答案 2 :(得分:5)
从其他计算机登录不应使与其他计算机上的Cookie关联的登录失效。但是,如果用户注销或“不是你?在这里登录”,这应该清除用户正在使用的cookie。
顺便说一下,通过坚持使用https并使其不用于编写脚本来窃取cookie可能会很困难。
通过在Cookie的输出中添加“; HttpOnly”,这将使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
您可以阅读有关此内容的更多信息
答案 3 :(得分:3)
记住我的cookie也应该识别机器。它应该与机器有关,因为有些地方你想要被记住,有些地方你不想要(家庭与工作)。
到期日期通常设置为合理的期间(两周)或用户明确从计算机注销后
答案 4 :(得分:0)
我要做的是将每个会话链接到一个IP地址。如果会话令牌是从不同的IP发送的,请拒绝它。
答案 5 :(得分:0)
访问令牌应该是IP特定的,以便它们不能轻易地跨机器传输。
它们也应该以允许用户查看他们拥有活动令牌的机器的方式实施。
选择在另一台计算机上创建新令牌后选择终止令牌的网站 - 选择其用户不会在多台计算机上访问其服务 - 或者如果他们这样做 - 他们的使用证明他们再次登录是合理的。
您使用的政策实际上取决于您持有的数据和用户的需求。