1

当用户登录时,我给他们一个名为 auth 的 cookie,其值是一个 GUID,它会在 2 周后过期。我将散列的 GUID 与他们的用户 ID 的盐一起保存在数据库中,然后在它到期时显示日期。当用户访问该站点时,我会检查 cookie 并在其匹配且未在数据库中过期时将其登录。

在 2 周结束之前的某个时间点,我正在考虑更新行并增加过期日期。你多久这样做一次?每个页面请求似乎都太频繁了,因为我会不断地写入用户表。

此时我也在考虑更改 auth cookie 的值。这样做的缺点是您无法在多台计算机/浏览器上进行身份验证。

我可以通过会话 cookie 来完成此操作,因此这种重写在每个会话中只发生一次。当用户访问一个页面时,我会检查一个名为 authenticated 的会话 cookie。如果它不存在,我给他们一个新的身份验证 cookie 值和身份验证会话 cookie,并增加数据库和身份验证 cookie 中的到期时间。如果是,我只是验证 auth cookie。

在您注销并重新登录之前,StackOverflow 似乎永远不会更改他们的身份验证 cookie。这似乎使其更容易受到会话劫持 - 如果您获得身份验证 cookie,您可以访问用户帐户,直到他们再次登录。由于他们的身份验证 cookie 不会过期或更改,因此您登录后不会注销用户。

  • 您是否允许用户从多个位置/浏览器登录?
  • 如果没有,您多久更改一次他们的身份验证令牌?
4

2 回答 2

0

这取决于安全级别,我工作过的地方通常必须有点高。

  1. 不,我们不允许人们从多个浏览器登录。
  2. 我们让人们在闲置 20 分钟后再次登录。根据您希望将人员超时的准确程度决定了您想要更新令牌的频率。每次用户将帖子发回系统时,我一直在更新过期时间。
于 2009-01-28T14:52:43.720 回答
0

嗯,我在这里找到了所有答案。看起来我需要一个连接表>.<。

http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/

于 2009-01-28T15:08:58.460 回答