如何使用自己独特的设备ID记住我的功能

问题描述 投票:0回答:4

在这个时代,我们有不同的机器,设备和手机,但有时我们希望以自己的名义记住。

我有一个网站,其中一个人应该能够在他正在使用的设备上检查“记住我”,并让这个工作在你家里的所有设备上。

目前我正在使用一个记住我的函数,它创建一个哈希键,将其保存在cookie中,并保存在数据库中。但是 - 当使用同一用户登录但在其他设备上时,数据库中的散列键会被覆盖,因此第一个设备上的记忆功能会关闭。

我正在考虑创建一个会话表来保存不同的会话(尽管它也可能为一个用户保存不同的会话)

所以问题:

如何使用php为设备设置/生成唯一的会话密钥。

浏览器指纹无法执行,因为我在不同设备上使用相同的浏览器。

任何想法?

当然,我需要一个安全的解决方案,防止将cookie复制到另一台设备或更改cookie信息(从用户到管理员)非常重要。

php security login
4个回答
0
投票

对于具有哈希键而不是用户名的开始,不会添加任何额外的安全性。

只需使用带有用户名的cookie即可。密码是为了安全。


0
投票

我会做会话表来存储所有会话。将用户的ID和会话ID存储在cookie中,这样当用户回来时,您可以检查它们是否都在表中。如果是,他们不必重新登录。


0
投票

基本思想是存储来自不同设备的会话ID并将它们绑定到一个用户。在数据库级别上,这意味着您的用户表中没有“session_id”字段,而是具有“session_id”和“user_id”列的单独表。

请考虑会话固定和会话劫持的安全隐患。有关更安全的“记住我”系统的说明,请阅读以下文章:

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

http://jaspan.com/improved_persistent_login_cookie_best_practice


0
投票

当然,我需要一个安全的解决方案,防止将cookie复制到另一台设备或更改cookie信息(从用户到管理员)非常重要。

最终,这是解决错误的问题。

防止这种情况的方法是:

  1. 到处使用HTTPS。
  2. 使用安全和httpOnly标志通过HTTPS发送所有cookie。

而已。这与client authenticity的问题有关。有一些技术可以阻止懒惰的攻击者(例如用户代理),但是这些技术中的任何一种都可以被欺骗。

© www.soinside.com 2019 - 2024. All rights reserved.