2011-02-25 37 views
3

我正在开发一个免费的移动应用程序,用于访问Web服务并定期从其下载一些内容。有没有针对此授权问题的解决方案?

我不想强制用户创建一个帐户来使用此Web服务,它应该可供此移动应用程序的所有用户使用。

但是,我不希望第三方能够访问该Web服务并重新使用它提供的数据。换句话说,只有我写的手机应用程序应该能够使用该服务,而不是其他人。

是否有解决此问题的解决方案?

回答

4

我想你可以做这样的事情:

1)您的应用程序试图将服务器

2)服务器的第一接入发送一个随机数/代码的应用程序

3)应用程序详细说明它并用你的秘密方法进行转换(它可以将它与一个秘密密码合并在一起并用结果做“散列”;“散列”是一个转换的编码字符串)

4)应用程序发送散列[编辑:(和原始从服务器获得的随机数/代码)< - 不,最好不要发送原始代码和编码字符串:如果拦截,它可能足以让所有人再次发送它以进入服务...更好将原始字符串保留在服务器某个地方,并等待来自您的应用的散列号END编辑]再次给服务器

5)服务器使用相同的秘密方法来“散列”原始数字(将它与秘密密码并对结果进行“散列”)并检查它是否与您的应用获得的密码相同。

6)如果它等于...服务器现在知道对于您的Web服务请求是从你的应用程序和批准访问它...

换句话说

:只是你的移动应用程序和服务器知道如何将随机数转换为“散列”... 有很多样本来获取字符串的“散列”,许多语言(php,javaScript ...),所以只是在网上搜索..

+0

谢谢,这有助于。然而,黑客可以反汇编我的应用程序的代码,并找到我的应用程序的秘密代码。但是对于我的简单应用来说,这应该就足够了 – Behrang 2011-02-25 21:52:27

+0

所以你混淆了你的代码,要求攻击者变得更聪明,更有决心。还要考虑是否可以通过监控设备和服务器之间的流量来推断或简单提取任何内容。 – 2011-02-25 22:07:32

+0

添加新评论/编辑 – meronix 2011-02-26 08:16:29

1

听起来好像您需要握手以确保正确的客户端连接到Web服务。我能想到的最简单的方法是在安装服务器之后检查连接时是否有一个硬编码/生成的密钥。

非常类似于CD键和现代游戏,它们检查服务器是否有有效的密钥。

相关问题