【问题标题】:Do you change an authentication token for a cookie-authenticated user? If so, how often?您是否更改 cookie 身份验证用户的身份验证令牌?如果有,多久一次?
【发布时间】:2023-04-06 03:48:01
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 我们使用持久会话并每 XX 分钟轮换一次令牌。如果有人使用无效的会话/令牌组合访问该站点,则所有记录都将被清除,用户将被注销。

标签: security authentication authorization


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-24
      • 2011-06-11
      • 1970-01-01
      • 2017-10-26
      • 2016-12-18
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多