Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用自己独特的设备id';s_Php_Security_Login - Fatal编程技术网

Php 如何使用自己独特的设备id';s

Php 如何使用自己独特的设备id';s,php,security,login,Php,Security,Login,在这个时代,我们拥有不同的机器、设备和电话,但有时我们希望人们记住我们自己的名字 我有一个网站,其中一个人应该能够检查“记住我”的设备,他目前正在工作,并有这个工作在你家里的所有设备 目前我正在使用一个memberme函数来创建一个散列键,并将其保存在cookie和数据库中。 但是-当使用同一用户登录时,但在其他设备上,数据库中的散列键将被覆盖,因此第一个设备上的“记住我”功能将关闭 我正在考虑创建一个会话表来容纳不同的会话(尽管它也可能为一个用户容纳不同的会话) 因此,问题: 如何使用php为

在这个时代,我们拥有不同的机器、设备和电话,但有时我们希望人们记住我们自己的名字

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

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

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

因此,问题:

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

浏览器指纹不起作用,因为我在不同的设备上使用相同的浏览器

有什么想法吗


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

对于一开始使用散列键而不是用户名并不会增加任何额外的安全性


只需使用带有用户名的cookie。密码在那里是为了安全。

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

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

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

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

归根结底,这是在解决错误的问题

防止这种情况的方法是:

  • 到处使用HTTPS
  • 使用安全和httpOnly标志通过HTTPS发送所有cookie

  • 就这样。这是与安全问题有关的。有一些技术可以阻止懒惰的攻击者(例如用户代理),但这些技术中的任何一种都可以被轻易地欺骗。

    我不确定我是否了解。。。你想让任何在你的局域网中使用计算机的人都像你一样自动登录吗?不,不是在我的局域网中-只有使用该网站的人应该能够检查-记住我。问题是,你有一台笔记本电脑、一台ipad和一台工作电脑,你在这个网站上使用它们,所有这些都应该能够通过使用cookie记住。但是,如果我不将散列键保存到数据库中,而只是使用cookie,我就可以轻松地编辑cookie,并将名称更改为其他名称,因为没有验证。我也不建议将密码保存到cookie中…@Double0Seven-用户名或哈希-有什么区别?它们都是一个字节字符串来标识一个字节。但是,两个用户名可能具有相同的哈希值,因此对于试图使用您的系统的人来说是令人沮丧的(或者他们可能会长期使用并获得其他人的特权!)。当然,正如我在其他评论中提到的,这将增加安全性。否则,您可以将用户名更改为cookie中的任何其他内容,例如,将pete更改为admin-您就是该站点的管理员!?当您添加保存在cookie和数据库中的密钥时,您可以在返回时检查数据库中的username=key是否允许他进入。@DoubleOSeven-它不允许。密码是安全位。你不储存在饼干里的那一块。用户名(或散列)只是标识个人-它只是一个字节字符串。要获得身份验证,您识别的人(通过用户名或哈希)必须提供凭据。这些凭证可能是密码、PIN码、虹膜扫描、指纹。。。