我应该多久更新一次登录cookie?

时间:2018-04-17 13:40:24

标签: php

我还没有编写代码,因为我不熟悉使用cookie并尝试围绕编码cookie的概念。我将为我的登录系统梳理使用cookie和会话数据。

由于我的Cookie设置了时间限制,我认为需要定期更新才能使Cookie保持活动状态。

我的计划:

  1. 用户登录

  2. 为用户ID,随机令牌,随机序列密钥和IP地址设置Cookie(我应该包含IP吗?)

  3. Cookie数据存储在数据库中,以便在检索Cookie时验证信息。

  4. 我将Cookie设置为有效期为1个月。

    Cookie数据的更新频率以及何时建议更新?

    • 每次服务器检查用户是否已记录时,都应该更新 是或应该是sparatic?它应该只在会话时更新 找不到并检查cookie的有效性?

    我是新手,所以在开始编写此代码之前,任何信息都会有所帮助。

1 个答案:

答案 0 :(得分:1)

首先,我建议在php中开发任何东西的框架,当框架有代码处理它们时,我不会尝试用cookie之类的东西重新发明轮子 - 就像Laravel一样, Codeigniter(以任何顺序)。

设置一个月的Cookie应该是可选的 - 即让您的用户选择是否是一次性登录,否则他们的帐户可能会有风险,比如说他们正在使用公共计算机。

最简单的形式是,每当登录用户根据会话而不是cookie刷新页面时更新数据库。 cookie是可编辑的客户端,因此不应该依赖于此更新机制。对于"记住我"可以更加信任它。功能,因为您可以将特定用户ID分配给特定的令牌/ cookie数据,这意味着您可以检查以查看完全匹配,如果不是这意味着某人已经篡改了cookie。

我不建议同时执行这两项操作 - 更新数据库和更新Cookie。在登录时设置cookie一次,然后只使用会话数据库。

不确定我是否会信任IP,请记住,现在可以通过外部软件欺骗和更改您的IP,在简单的路由器重启之上,可以在重新连接时分配新的IP。它可能是一种选择,但它不是唯一的身份验证基础。

评论中的例子,澄清:

说我是ID为1的用户,拥有手机,平板电脑和PC。 Cookie从登录日期和时间起默认有效期为14天,仅插入一次,之后不再更新。

我启用了"记得我"我今天登录时所有3台设备上都有功能 -

手机 - 17.04.2018 12:00 平板电脑 - 17.04.2018 12.20 PC - 17.04.2018,12:30

我们前往未来,我们的日期现在是28.04.2018。

11天过去了。

我在新设备上启用此功能,例如我的合作伙伴电话。 系统应自动删除"存储的"从我的手机登录,即使14天没有通过(因为3是每个帐户可以记住的最大会话数)。

我提供的示例只有在你想创建一个" secure"网站不仅控制活动cookie,还控制以前的cookie。显然,为了更安全,我甚至不会给3个记住我的会话,但只允许一两个。

如果限制不是我所追求的,我只会给用户一个设置页面,他们可以在其中处理其帐户上的其他活动会话,并让他们选择是否远程登录这些设备。