您有相互冲突的要求:
用户必须能够更新自己的设备,并且他们不太擅长记住复杂的程序或密码。
和:
此外,如果您知道用户密码,任何拥有设备的人都可以更新该用户信息。
如果您的用户只能(几乎)使用密码,那么您不能指望在任何情况下都能够保护拥有密码的任何其他人。
没有“神奇”身份验证可以告诉您特定用户或设备在您提供的范围之外是合法的。
您可以对下载进行密码保护,您可以加载证书,您可以获得 PDA 信息(甚至是蜂窝信息),但除非您添加另一种身份验证机制,否则您最终得到的只是一个密码。
密码是您最薄弱的环节,您似乎在表明您无法提供更严格的访问权限,但您不知何故需要它?
如果您有另一个身份验证通道(电话、电子邮件、短信),那么您可以提供更强大、更有意义的身份验证。
例如,您可以使您的程序操作依赖于“public.key”文件,该文件具有您的服务器需要使用的每个用户的公钥。一旦用户登录到您的网站,让他们给您他们的电话号码(所以现在您有了电话号码和密码)并发送带有链接的短信,其中包含指向临时下载密钥的链接。为每个用户制作一个新密钥,将他们的私钥保存在服务器上,并使用该密钥对加密(或至少验证)设备和服务器之间的每笔交易。
现在,如果其他人想假装他们是他们的用户,他们必须通过以下三种方式之一获取该文件:
- 他们直接将其从 PDA 中取出(他们还需要密码,因为公钥应受用户密码保护)
- 他们让用户请求一个新的 SMS 链接,并以某种方式在没有电话的情况下获取链接
- 他们更改电话号码并请求新的短信链接
无论如何,您不仅要验证密码,还要验证关联的电话号码。您可以让用户难以更改电话号码(当他们请求更改电话号码、让他们打电话等时,也可以根据他们的电子邮件进行验证)。
当然你也可以对其他的通讯方式做同样的事情,但是用户越来越习惯短信认证和下载,所以并没有太多的麻烦。
-亚当