48

查看 Gmail 的 cookie 很容易看到“记住我”cookie 中存储的内容。用户名/一次性访问令牌。在用户名是秘密的情况下,它也可以以不同的方式实现。但不管怎样……这东西的安全性不是很高:你偷了 cookie,然后你就准备好了。

然而,我的问题是在功能方面:你什么时候擦除他们的访问令牌?如果用户登录时没有在另一台机器上点击“记住我”,是否应该使他们在所有机器上的访问令牌失效?我在问这传统上是如何实现的,以及它应该如何实现。

4

5 回答 5

15

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

传统上它会使用超时,cookie 在一定时间长度后过期(或当用户退出时)。

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

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

于 2009-07-02T14:54:12.420 回答
6

从另一台机器登录不应使与另一台机器上的 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

你可以阅读更多关于这个

于 2009-07-02T14:55:06.287 回答
3

记住我的 cookie 也应该能识别机器。它应该与机器有关,因为有些地方您想被记住,而有些地方您不想记住(家庭与工作)。

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

于 2009-07-02T14:54:44.057 回答
0

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

于 2009-07-02T14:55:39.657 回答
0

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

它们还应该以允许用户查看他们拥有活动令牌的机器的方式实现。

一旦在另一台计算机上创建了一个新令牌,就选择取消令牌的站点 - 选择他们的用户不会在多台计算机上访问他们的服务 - 或者如果他们这样做 - 他们的使用证明让他们再次登录是合理的。

您采用的策略实际上取决于您持有的数据和用户的需求。

于 2009-07-02T14:57:28.653 回答