2

我有一个在 Windows Mobile 6 Professional PDA 设备上运行的应用程序。通过从设备浏览 url 并下载出租车来安装应用程序。

用户在应用程序中捕获信息,然后使用合并复制和 IIS v6 将其复制回 SQL 2005 服务器。

尽管用户需要在设备上登录应用程序,但任何知道 url 的人都可以下载和安装。此外,如果您知道用户密码,任何拥有设备的人都可以更新该用户信息。

我想以某种方式在安装或复制阶段(或两者)对设备进行身份验证。

是否可以根据序列号或 IMEI(手机 ID)号码对设备进行身份验证?有没有办法将证书加载到设备上,以便只允许经过认证的设备连接?

我想要一个不太难实现和支持的系统。用户必须能够更新自己的设备,并且他们不太擅长记住复杂的程序或密码。

4

3 回答 3

5

一种可能的解决方案是发送唯一设备 ID 作为身份验证的一部分。Windows Mobile 团队博客GetDeviceUniqueID上有一篇关于使用的帖子。

您可以在用户首次连接到服务器时存储此唯一 ID,并在每次合并之前对其进行验证。

这种方法有助于确保用户登录是通过他们自己的手机进行的。它解决了远程入侵者将您的程序下载到他们自己的手机并登录到合法用户帐户的问题。当然,如果这样的入侵者可以访问您的用户电话和密码,那么所有的赌注都将被取消。

于 2009-01-17T21:00:34.560 回答
3

您有相互冲突的要求:

用户必须能够更新自己的设备,并且他们不太擅长记住复杂的程序或密码。

和:

此外,如果您知道用户密码,任何拥有设备的人都可以更新该用户信息。

如果您的用户只能(几乎)使用密码,那么您不能指望在任何情况下都能够保护拥有密码的任何其他人。

没有“神奇”身份验证可以告诉您特定用户或设备在您提供的范围之外是合法的。

您可以对下载进行密码保护,您可以加载证书,您可以获得 PDA 信息(甚至是蜂窝信息),但除非您添加另一种身份验证机制,否则您最终得到的只是一个密码。

密码是您最薄弱的环节,您似乎在表明您无法提供更严格的访问权限,但您不知何故需要它?

如果您有另一个身份验证通道(电话、电子邮件、短信),那么您可以提供更强大、更有意义的身份验证。

例如,您可以使您的程序操作依赖于“public.key”文件,该文件具有您的服务器需要使用的每个用户的公钥。一旦用户登录到您的网站,让他们给您他们的电话号码(所以现在您有了电话号码和密码)并发送带有链接的短信,其中包含指向临时下载密钥的链接。为每个用户制作一个新密钥,将他们的私钥保存在服务器上,并使用该密钥对加密(或至少验证)设备和服务器之间的每笔交易。

现在,如果其他人想假装他们是他们的用户,他们必须通过以下三种方式之一获取该文件:

  • 他们直接将其从 PDA 中取出(他们还需要密码,因为公钥应受用户密码保护)
  • 他们让用户请求一个新的 SMS 链接,并以某种方式在没有电话的情况下获取链接
  • 他们更改电话号码并请求新的短信链接

无论如何,您不仅要验证密码,还要验证关联的电话号码。您可以让用户难以更改电话号码(当他们请求更改电话号码、让他们打电话等时,也可以根据他们的电子邮件进行验证)。

当然你也可以对其他的通讯方式做同样的事情,但是用户越来越习惯短信认证和下载,所以并没有太多的麻烦。

-亚当

于 2009-01-29T14:36:08.240 回答
0

您可以为每次下载生成略有不同的 cab 文件。唯一的区别是您的应用程序将用作用户/密码模拟的安全令牌。那应该是真正安全的公钥。

每次他们访问您的应用程序时,您都可以向他们发送带有代码的 SMS。

于 2009-01-30T10:51:07.787 回答