独特设备的最佳php登录系统逻辑是什么?

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

我正在开发一个重要项目,需要高级别的安全性才能进行登录验证。 compay的经理告诉我,他希望允许客户只登录1台设备(PC,桌面或手机),这样只要该设备可以访问hes帐户,即使他将电子邮件和密码提供给其他人,它不应该允许其他人登录到hes帐户,因此每个客户都有自己的帐户,只能从一个设备访问。我做过研究但没有在我的问题上找到很多答案,所以我到现在为止做的是这个......

在他们注册数据库之后,我在名为cookie的用户表上添加了2列,用户看到的第一件事是“只访问你的设备”页面,他按下了按钮,并创建了一个cookie给他的设备,同时在数据库的时间也是如此,所以从那里我可以为用户建立一个独特的连接。我现在问是否有更安全的方式为用户进行独特的登录,例如PC存储带有密钥的文件或其他无法通过清除历史数据删除的东西?在这一部分给我建议是非常有帮助的......

php ajax database cookies login
1个回答
1
投票

这是一个棘手的问题。我将首先考虑您应该首先考虑的两个备用选项(2FA和短会话),然后在我的答案中进入硬件识别。

另一种选择是使用唯一设备作为双因素身份验证(2FA)的一部分。每当登录发生时,使用电话号码并向他们的电话发送包含一些随机数字的短信(例如,Twilio是一个体面的服务,但如果你发送许多短信,可能会相当昂贵)。这允许某人从他们选择的任何设备登录,但他们必须拥有相关设备。要限制登录到单个浮动设备,您可以对其进行设置,以便单个帐户一次只允许会话。这样,如果其他人设法登录(非常困难),则其他设备被踢出。将帐户绑定到公司发行的电话并使用SMS意味着该设备几乎肯定是在登录时由该人拥有。

另一种选择是将您的登录系统与YubiKey或其他实现U2FA或FIDO2协议的硬件密钥集成。支持这些设备需要直接或通过扩展支持浏览器。钥匙也很贵。

通过电子邮件发送2FA代码并使用Google身份验证器(应用)是另外两个2FA选项,不需要花钱。我在开源CubicleSoft单点登录(SSO)软件中实现了这两个:

https://github.com/cubiclesoft/sso-server

我还建议使用短会话超时(例如5分钟的浮动窗口)。只要浏览器选项卡处于打开状态,就会向服务器发送定期心跳以使会话保持活动状态(或者不要并且需要交互以保持会话处于活动状态 - 这取决于应用程序)。关闭所有选项卡后,会话终止,这需要用户再次登录。上面的SSO服务器产品还支持开箱即用的短会话管理。将2FA机制与短会话相结合,可以减少多个用户登录多个设备上的单个帐户。

当新的,闪亮的东西出现时,硬件失败并且人们购买新的硬件。当用户必须切换设备时,将认证绑定到特定硬件上可能导致真正的麻烦。

但是,如果您真的想将登录绑定到单个设备,则应该查看“Web浏览器指纹识别”的大致方向。广告服务和分析行业一直在寻找实现您所描述内容的方法,这样他们就可以在不依赖浏览器Cookie的情况下准确跟踪网络中的人,这样即使删除了cookies / localStorage,跟踪信息仍然存在。

该网站提到并演示了几种技术:

https://browserleaks.com/

另一种选择是使用附加的硬件设备ID:

http://cubicspot.blogspot.com/2019/01/hardware-fingerprinting-with-web-browser.html

手机和平板电脑几乎总是附带相机。笔记本电脑通常也是如此。台式机可能没有。

但是,如果您仅依赖于该API或任何其他特定API,则可能会在未来发生变化/中断。

警告:未经明确许可,做任何唯一标识设备或用户的行为都可能违反GDPR和/或2018年加州消费者隐私法案。如果他们在欧盟或加利福尼亚州开展业务,您的雇主应咨询律师并使用您的登录系统与这些区域设置中的用户。

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