Iphone 使用移动设备UUID登录是个好主意?

Iphone 使用移动设备UUID登录是个好主意?,iphone,mobile,cordova,jquery-mobile,Iphone,Mobile,Cordova,Jquery Mobile,我使用phonegap和jQuery mobile开发了一个应用程序,我第一次使用了这两种技术 现在,用户应该登录到远程服务器。我准备了一个JSON服务,会话将存储在远程服务器上。为了让一切都舒适,我希望用户只登录一次。以下是我的流程: 1) 手机查看远程目录-我的UUID是否允许在特定帐户中使用 1a)如果是,请登录 1b)如果否,则继续2 2) 登录 2a)如果登录成功,将UUID存储在用户帐户中。从其他帐户中删除UUID(如果已存储在那里) 2b)如果登录失败,请转到2 现在我的问题是:出

我使用phonegap和jQuery mobile开发了一个应用程序,我第一次使用了这两种技术

现在,用户应该登录到远程服务器。我准备了一个JSON服务,会话将存储在远程服务器上。为了让一切都舒适,我希望用户只登录一次。以下是我的流程:

1) 手机查看远程目录-我的UUID是否允许在特定帐户中使用

1a)如果是,请登录

1b)如果否,则继续2

2) 登录

2a)如果登录成功,将UUID存储在用户帐户中。从其他帐户中删除UUID(如果已存储在那里)

2b)如果登录失败,请转到2

现在我的问题是:出于安全原因,使用UUID作为“密钥”是一个好主意吗?还是可以用一种肮脏的方式操纵它

另一个选项是将密码(散列)存储在iphone上

什么是最佳实践

谢谢,
Christian

您可以使用UUID作为密钥。您还可以转换UUID(散列),尽管UUID对于每个设备都是唯一的。根据我的担心,您应该使用UUID概念。它比手机上存储的密码(散列)要好得多。

只要UUID不是用户唯一的唯一标识符,就可以了。请记住,UUID标识的是设备,而不是用户。用户可能会丢失或损坏他们的手机,必须换一部新的,这意味着UUID会发生变化。它仍然是相同的用户,使用不同的电话

我猜你说的是设备标识符,苹果称之为“UDID”

为此目的使用UDID对我来说似乎不是一个好主意。从您的目的来看,UDID和任何其他40位十六进制字符串之间没有区别。但是,从用户的角度来看,它是一个不可更改的字符串,它不是私有的,并且被用作用户名和密码的替代。由于任何应用程序都可以发现UDID,并且UDID是免费提供给开发人员和其他人的,因此整个系统的安全性只取决于哈希算法的模糊性

如果您要求用户在每次会话开始时输入密码,那么可以使用UDID作为用户名的代理,因为这样至少会有一个私有的、可更改的登录组合组件

与应用程序中生成的随机40位十六进制字符串相比,我认为使用UDID没有任何真正的优势。另一方面,生成自己的字符串的好处是,没有其他应用程序可以轻松发现您的字符串,用户可以(如果您允许)随意更改字符串


注意:我不是安全专家,我也不想给人留下我是安全专家的印象。但是,作为一个用户,如果使用一个应用程序按照您描述的方式使用设备id,我会感到紧张。

您是对的,同一设备上的任何其他应用程序都可以轻松登录。但是如果我使用has-from密码/用户名,这将不太容易识别。我可能可以把这个散列存储在手机上,因为它不是一个干净的密码。谢谢正如Caleb在下面指出的,设备上的每个应用程序都可以轻松登录。@Christian感谢您提供的信息。我犯了一些愚蠢的错误