我还没有编写代码,因为我不熟悉使用cookie并尝试围绕编码cookie的概念。我将为我的登录系统梳理使用cookie和会话数据。
由于我的Cookie设置了时间限制,我认为需要定期更新才能使Cookie保持活动状态。
我的计划:
用户登录
为用户ID,随机令牌,随机序列密钥和IP地址设置Cookie(我应该包含IP吗?)
Cookie数据存储在数据库中,以便在检索Cookie时验证信息。
我将Cookie设置为有效期为1个月。
Cookie数据的更新频率以及何时建议更新?
我是新手,所以在开始编写此代码之前,任何信息都会有所帮助。
答案 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个记住我的会话,但只允许一两个。
如果限制不是我所追求的,我只会给用户一个设置页面,他们可以在其中处理其帐户上的其他活动会话,并让他们选择是否远程登录这些设备。