"在这台电脑上记住我" - 它应该如何运作?

Dan*_*ark 48 security password-protection remember-me

查看Gmail的Cookie,很容易看到存储在"记住我"cookie中的内容.用户名/一次访问令牌.在用户名是秘密的情况下,它可以以不同的方式实现.但无论如何......事情的安全性不是很高:你偷走了饼干而你已经准备好了.

我的问题是在功能方面,但是你什么时候擦拭他们的访问权限?如果用户登录而未在另一台计算机上单击"记住我",是否应该在所有计算机上使其访问权限无效?我问的是传统上如何实现它,以及它应该如何实现.

Nic*_*cue 15

我经常同时使用2台或3台机器,并在所有机器上"记住我".如果其中一个断开其他会非常烦人的,所以我不推荐它.

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

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

此外,请记住拒绝服务的可能性 - 如果一台计算机上的操作可能会迫使另一台计算机无法使用,则可能会阻止合法用户在某些情况下取回控制权.

  • 感谢那.因此,在注销时,我可以杀死所有持久会话?那不会烦人吗?这听起来不错. (5认同)
  • +1我正准备写相同的答案,经常在4..5台电脑和手机上使用相同的网站. (3认同)

Dav*_*ers 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
Run Code Online (Sandbox Code Playgroud)

你可以阅读更多相关信息