PhoneGap 在 Android 和 iOS 上提供的设备 ID 的可靠性如何?

信息安全 验证 移动的 安卓 IOS
2021-08-27 23:27:56

我有一个网络应用程序,允许用户将移动设备添加到他们的帐户(使用移动应用程序)。

每个设备都由其UUID唯一引用。移动客户端是使用 PhoneGap 开发的,因此它device.uuid为此使用了变量。用 PhoneGap 编写的应用程序可以在许多系统上运行,但我的应用程序仅针对 Android 和 iOS。

问题:当我的系统(服务器和移动客户端)检测到新用户帐户(新登录名和密码)试图添加一个设备时,我的系统(服务器和移动客户端)应该如何反应,该设备的 UUID 已经存在于数据库中并且当前绑定到另一个用户帐号?

我可以假设(在当今世界 - 在 iOS 和 Android 上)任何特定设备的 UUID:

  • 毫无疑问是独一无二的(两个设备不能有相同的 UUID),
  • 是安全的(不能更改或欺骗)。

换句话说:在上述情况下,我的服务能否自动将特定设备(UUID)“重新绑定”到另一个用户帐户?我可以假设没有两个设备具有相同的 UUID 并且没有太简单的方法来欺骗 UUID?

或者我应该在这种情况下引入一些“更安全”的逻辑?像某种设备注销(从第一个帐户)并重新注册(在新帐户上)?并且不允许用户(用户帐户)添加/注册新设备,如果相同的 UUID 已经注册到另一个用户帐户?

我不会否认,我是安全领域的门外汉。所以,我会假设,UUID 是独特的并且具有足够的抗欺骗性,可以在提到的情况下引入提到的自动设备 (UUID) 重新注册。

2个回答

不,从客户端报告时可以伪造 UUID。不要假设它可以证明设备的任何身份,也不要假设它与您上次看到它时是同一个设备。如果您确实需要验证设备,最好的办法是制作一个可以存储在设备上的证书,并在查看时要求提供该证书。

如果他们是真正的报告,他们应该是普遍唯一的(UU 代表什么),但在许多(如果不是大多数)情况下,有人完全有可能强迫它报告他们选择的非唯一值。甚至可以使用 Android 应用商店中提供的简单应用程序来完成。

可以有两个具有相同 UUID 的设备。我设法克隆了一些电视棒(nandroid 备份),使用相同的应用程序(使用 phonegap 制作)。在代码中,设备被要求提供 UUID,并且由于与服务器的 web 服务通信,我已经证明它们都具有相同的 UUID。