我有一个在Windows Mobile 6 Professional PDA设备上运行的应用程序。通过从设备浏览url并下载cab来安装该应用程序。
用户捕获应用程序中的信息,然后使用合并复制和IIS v6将这些信息复制回SQL2005服务器。
尽管用户需要登录到设备上的应用程序,但任何知道url的人都可以下载和安装。此外,如果你知道用户密码,任何拥有设备的人都可以更新该用户的信息。
我想以某种方式在安装和/或复制阶段对设备进行身份验证。
是否可以根据序列号或IMEI (移动电话ID)号对设备进行身份验证?是否有一种方法可以将证书加载到设备上,以便只允许经过认证的设备连接?
我想要一个不太难实现和支持的系统。用户必须能够更新自己的设备,而且他们不太擅长记住复杂的程序或密码。
发布于 2009-01-17 21:00:35
一种可能的解决方案是发送唯一的设备id作为认证的一部分。有一篇关于在Windows Mobile Team Blog上使用GetDeviceUniqueID
的文章。
您可以在用户首次连接到服务器时存储此唯一id,并在每次合并之前对其进行验证。
这种方法有助于确保登录的用户是从自己的电话登录的。它解决了远程入侵者将您的程序下载到自己的手机并登录到合法用户帐户的问题。当然,如果这样的入侵者可以访问您的用户的电话和密码,所有的赌注都是无效的。
发布于 2009-01-29 14:36:08
您有相互冲突的需求:
用户必须能够更新他们自己的设备,而且他们不太擅长记住复杂的程序或密码。
和:
另外,如果你知道用户的密码,任何拥有设备的人都可以更新该用户的信息。
如果您的用户只能(勉强)使用密码,那么您就不能指望在任何情况下都能保护用户免受其他拥有其密码的用户的攻击。
除了您提供的内容之外,没有什么“魔法”身份验证可以告诉您某个特定的用户或设备是合法的。
您可以对下载进行密码保护,可以加载证书,还可以获取PDA信息(甚至手机信息),但是除非您添加另一种身份验证机制,否则最终您得到的只是一个密码。
密码是你最薄弱的一环,你似乎表明你不能提供更严格的访问,但你需要它吗?
如果您有其他身份验证渠道(电话、电子邮件、SMS),则可以提供更强大、更有意义的身份验证。
例如,您可以使您的程序操作依赖于一个"public.key“文件,该文件具有您的服务器需要使用的每个用户的公钥。一旦用户登录到你的网站,让他们给你他们的电话号码(现在你有了电话号码和密码),并发送一条短信,其中包含一个临时下载密钥的链接。为每个用户创建一个新密钥,将他们的私钥保存在服务器上,并使用此密钥对设备和服务器之间的每个交易进行加密(或至少验证)。
现在,如果其他人想要假装自己是他们的用户,他们必须通过以下三种方式之一来获取该文件:
在任何情况下,您不仅要验证密码,还要验证关联的电话号码。您可以让用户很难更改电话号码(当他们请求更改电话号码、让他们呼叫等时,也可以根据他们的电子邮件进行验证)。
当然,您也可以使用其他通信渠道进行同样的操作,但用户越来越习惯于SMS身份验证和下载,因此不会有太多麻烦。
-Adam
发布于 2009-01-30 10:51:08
您可以为每次下载生成略有不同的cab文件。唯一的区别是您的应用程序将安全令牌用作用户/密码模拟。这应该是真正安全的公钥。
您可以在他们每次访问您的应用程序时向他们发送带有代码的短信。
https://stackoverflow.com/questions/454019
复制相似问题