我有一个在Windows Mobile 6 Professional PDA设备上运行的应用程序。通过浏览设备中的URL并下载驾驶室来安装应用程序。
用户捕获应用程序中的信息,然后使用合并复制和IIS v6将其复制回SQL 2005服务器。
虽然用户需要登录设备上的应用程序,但任何知道该URL的人都可以下载并安装。此外,如果您知道用户密码,则任何拥有设备的人都可以更新该用户信息。
我想以某种方式在安装或复制阶段(或两者)对设备进行身份验证。
是否可以根据序列号或IMEI(手机ID)号码验证设备? 有没有办法将证书加载到设备上,以便只允许经过认证的设备连接?
我想要一个不太难实现和支持的系统。用户必须能够更新自己的设备,并且他们不擅长记住复杂的程序或密码。
答案 0 :(得分:5)
一种可能的解决方案是将唯一设备ID作为身份验证的一部分发送。在Windows Mobile Team Blog上有使用GetDeviceUniqueID
的帖子。
当用户首次连接到服务器并在每次合并之前验证它时,您可以存储此唯一ID。
此方法有助于确保用户登录是通过自己的手机进行的。它解决了远程入侵者将程序下载到自己的手机并登录到合法用户帐户的问题。当然,如果这样的入侵者可以访问您的用户电话和密码,则所有投注均已关闭。
答案 1 :(得分:3)
您的要求存在冲突:
用户必须能够更新他们的 自己的设备,他们不是很好 在记住复杂的程序 或密码。
和
此外,如果您知道用户密码 有设备的任何人都可以更新 用户信息。
如果您的用户只能(几乎)不能使用密码,那么您无法在任何情况下保护其他任何拥有密码的人。
没有“魔法”身份验证可以告诉您特定用户或设备的合法性超出您提供的范围。
您可以使用密码保护下载,您可以加载证书,您可以获取PDA信息(甚至是蜂窝信息),但除非您添加其他身份验证机制,否则在一天结束时您所拥有的只是一个密码。
密码是您最薄弱的环节,您似乎表示您无法提供更严格的访问权限,但您需要它?
如果您有其他身份验证通道(电话,电子邮件,短信),那么您可以提供更强大,更有意义的身份验证。
例如,您可以使程序操作依赖于“public.key”文件,该文件具有服务器需要使用的每用户公钥。一旦用户登录到您的网站,让他们给您他们的电话号码(所以现在您有电话号码和密码)并发送短信,其中包含临时下载密钥的链接。为每个用户创建一个新密钥,将其私钥保存在服务器上,并使用此密钥对加密(或至少验证)设备和服务器之间的每个事务。
现在,如果其他人想要假装他们是他们的用户,他们必须以三种方式之一获取该文件:
在任何情况下,您不仅要验证密码,还要验证关联电话号码。您可以让用户更难以更改电话号码(当他们请求更改电话号码时,也可以根据他们的电子邮件进行验证,让他们打电话等)。
当然,你可以对其他通讯渠道做同样的事情,但是用户越来越习惯于短信认证和下载,所以不会太麻烦。
-Adam
答案 2 :(得分:0)
您可以为每次下载生成略有不同的cab文件。唯一的区别是您的应用程序将用作用户/密码模拟的安全令牌。这应该是真正安全的公钥。
每次访问您的应用程序时,您都可以使用代码向他们发送短信。