您是不是更改 cookie 身份验证用户的身份验证令牌?如果有,多久一次?
Posted
技术标签:
【中文标题】您是不是更改 cookie 身份验证用户的身份验证令牌?如果有,多久一次?【英文标题】:Do you change an authentication token for a cookie-authenticated user? If so, how often?您是否更改 cookie 身份验证用户的身份验证令牌?如果有,多久一次? 【发布时间】:2010-10-04 00:36:15 【问题描述】:当用户登录时,我给他们一个名为 auth 的 cookie,其值是一个 GUID,它会在 2 周后过期。我将散列的 GUID 与他们的用户 ID 的盐一起保存在数据库中,然后确定它到期的日期。当用户访问该站点时,我会检查 cookie 并在其匹配且未在数据库中过期时将其登录。
在 2 周结束前的某个时间点,我正在考虑更新行并增加过期日期。您多久执行一次此操作?每个页面请求似乎都太频繁了,因为我会不断地写入用户表。
此时我也在考虑更改 auth cookie 的值。这样做的缺点是您无法在多台计算机/浏览器上进行身份验证。
我可以通过会话 cookie 来完成此操作,因此这种重写在每个会话中只发生一次。当用户访问一个页面时,我会检查一个名为 authenticated 的会话 cookie。如果它不存在,我给他们一个新的身份验证 cookie 值和身份验证会话 cookie,并增加数据库和身份验证 cookie 中的到期时间。如果是,我只是验证 auth cookie。
在您注销并重新登录之前,*** 似乎永远不会更改他们的身份验证 cookie。这似乎使其更容易受到会话劫持 - 如果您获得身份验证 cookie,您可以访问用户帐户,直到他们登录再次。由于他们的身份验证 cookie 不会过期或更改,因此您登录后不会注销用户。
您是否允许用户从多个位置/浏览器登录? 如果没有,您多久更改一次他们的身份验证令牌?【问题讨论】:
我们使用持久会话并每 XX 分钟轮换一次令牌。如果有人使用无效的会话/令牌组合访问该站点,则所有记录都将被清除,用户将被注销。 【参考方案1】:这取决于安全级别,我通常工作的地方必须有点高。
-
不,我们不允许人们从多个浏览器登录。
我们让人们在闲置 20 分钟后再次登录。根据您希望将人员超时的准确程度决定了您想要更新令牌的频率。每次用户将帖子发回系统时,我一直在更新过期时间。
【讨论】:
【参考方案2】:嗯,我在这里找到了所有答案。看来我需要一个连接表>.<.>
http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/
【讨论】:
以上是关于您是不是更改 cookie 身份验证用户的身份验证令牌?如果有,多久一次?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查用户是不是通过 Laravel 上的 cookie 会话进行身份验证?
更改 cookie 文件后 RabbitMQ 节点身份验证失败
如果用于身份验证的 JWT 令牌保存在 HTTP-Only cookie 中,您如何从 cookie 中读取它以便我可以将其包含在请求标头中?