我还没有编写代码,因为我对cookies的使用还很陌生,并且试图把我的注意力集中在cookies编码的概念上。我将对我的登录系统中cookie和会话数据的使用进行梳理。
因为我的cookie中有一个时间限制,所以我认为需要定期更新它以保持cookie活动。
我的计划:
我将cookie设置为有效期为1个月。
应多久更新一次cookie数据,以及建议何时更新?
我是新手,所以在我开始编写这段代码之前,任何信息都是有帮助的。
发布于 2018-04-17 13:46:54
首先,我建议一个用php开发任何东西的框架,并且我不会试图用cookie之类的东西来重新发明轮子,当框架已经有了处理它们的代码时--即Laravel,Codeigniter (按任何顺序)。
设置一个月的cookie应该是可选的--即让用户选择这是否是一次性登录,否则他们的帐户可能会有风险,比如他们使用的是公共计算机。
最简单的形式是,每当登录用户根据会话刷新页面时更新数据库,而不是cookie。cookie是可编辑的客户端,因此不应依赖于此更新机制。对于“记住我”特性,可以更多地信任它,因为您可以将特定的用户ID分配给特定的令牌/ cookie数据,这意味着您可以检查查看是否完全匹配,如果不是,这意味着有人篡改了cookie。
我不建议同时更新数据库和更新cookie。设置cookie一次,在登录时,只需使用会话数据库即可。
不确定我会信任IP,记住你的IP现在可以通过外部软件被欺骗和改变,在一个简单的路由器重新启动的基础上,这可能会分配新的IP的重新连接。它可以是一个选项,但它不能成为身份验证的唯一基础。
评论中的例子,澄清:
假设我是一个ID 1的用户,他有手机、平板电脑和个人电脑。Cookie是默认的,从登录日期和时间起14天内有效,并且只插入一次,此后永远不会更新。
我今天登录时,在我所有的三个设备上都启用了“记住我”的功能-
手机
我们前往未来,我们现在的日期是28.04.2018。
11天过去了。
我启用了新设备的功能,例如我的合作伙伴手机。系统应该自动删除我的手机上的“存储”登录,即使14天没有过去(因为3是每个帐户可以记住的最大会话)。
我提供的例子只有当您想要创建一个“安全”网站时才有意义,它不仅控制活动的cookie,而且控制以前的cookie。显然,为了更安全起见,我甚至不会给3个记忆我会话,但只允许一个或两个。
如果限制不是我想要的,我只会给用户一个设置页面,让他们可以处理帐户上的其他活动会话,并给他们是否远程登录这些设备的选择。
https://stackoverflow.com/questions/49879707
复制相似问题