查看Gmail的cookie可以很容易地看到什么是存储在“记住我”的cookie。 用户名/一次性访问令牌。 它可以在不同的地方用户名是秘密的情况下实施,以及。 但无论......事情不是很高的安全性:你偷饼干,你准备好去。
我的问题是在功能性方面,但是:当你抹他们的访问令牌? 如果用户登录时不点击“记住我”另一台机器上,它应该无效在所有机器上的访问令牌? 我问这是如何实现的传统,而且应该如何执行。
查看Gmail的cookie可以很容易地看到什么是存储在“记住我”的cookie。 用户名/一次性访问令牌。 它可以在不同的地方用户名是秘密的情况下实施,以及。 但无论......事情不是很高的安全性:你偷饼干,你准备好去。
我的问题是在功能性方面,但是:当你抹他们的访问令牌? 如果用户登录时不点击“记住我”另一台机器上,它应该无效在所有机器上的访问令牌? 我问这是如何实现的传统,而且应该如何执行。
我经常同时使用2或3台机器,并且对所有的人都“记住我”。 如果他们中的一个断开的人,这将是很讨厌,所以我不会推荐它。
传统上,将利用超时,该cookie的一定时间长度(或者当用户退出)后过期。
这一切都取决于你的安全模型。 如果你正在写在这里你只指望一个用户将一台计算机上,那么你可能希望有比Gmail的更严格的限制,公司内部应用程序。
此外,牢记拒绝服务的可能性 - 如果一台机器上的操作可以强制另一台机器无法使用,这可能是使用以防止合法用户在某些情况下采取控制后面。
该文章持续登录的最佳实践和改进持续登录的最佳实践是关于如何实现这种功能极大的引用。
参见相关的StackOverflow问题
从另一台计算机登录不应该无效用不同的机器上的Cookie关联的登录。 但是,如果用户logsout或“不是吗?在此处登录”这应该清除该用户正在使用该cookie。
通过偷饼干的方式,可以做出努力,通过坚持HTTPS并使其用于脚本。
通过添加“;仅Http”到了把你的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
你可以阅读更多关于这
记住我的cookie应确定机器也是如此。 因为有要记住,你不(VS在家工作)的地方和其他地方应该进行相关的机器。
有效期限被设置通常在合理时间(2周)或之后用户已显式地从机注销,
我会做的是每个会话链接到一个IP地址。 如果会话令牌是从一个不同的IP比你有发送,拒绝它。
访问令牌应该是IP专用的,所以他们不能轻易地跨机器传输。
他们也应该以一种允许用户查看哪些机器,对活跃令牌实现。
那些选择杀死一旦一个新的另一台计算机上创建一个令牌网站 - 做出选择,他们的用户将无法在多台计算机上访问他们的服务 - 或者,如果他们这样做 - 他们的使用情况证明应该让他们重新登录。
你雇用的政策实际上取决于你持有的数据和用户的需求。