【问题标题】:Is there a solution for this authorization problem?这个授权问题有解决方案吗?
【发布时间】:2011-07-04 04:08:34
【问题描述】:

我正在开发一个免费的移动应用程序,它可以访问网络服务并定期从中下载一些内容。

我不想强迫用户创建一个帐户来使用这个网络服务,它应该可供这个移动应用的所有用户使用。

但是,我不希望第三方能够访问该 Web 服务并重用它提供的数据。换句话说,只有我正在编写的移动应用程序才能使用该服务,而其他任何人都不能使用。

这个问题有解决办法吗?

【问题讨论】:

    标签: iphone android windows-phone-7 windows-mobile mobile


    【解决方案1】:

    我猜你可以这样做:

    1) 您的应用尝试首次访问服务器

    2) 服务器向应用发送一个随机数/代码

    3) 应用程序对其进行详细说明并使用您的秘密方法对其进行转换(它可以将其与秘密密码合并并对结果进行“散列”;“散列”是转换后的编码字符串)

    4) 应用程序发送哈希 [编辑:(以及它从服务器获得的原始随机数/代码) 再次发送到服务器

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

    6) 如果相等...服务器现在知道对您的网络服务的请求来自您的应用并批准对它的访问...

    换句话说:只有您的移动应用程序和您的服务器知道如何将随机数转换为“哈希”... 有许多示例方法来获取字符串的“哈希”,使用多种语言(php、javaScript ...),所以只需在网络上搜索...

    【讨论】:

    • 谢谢,这有帮助。然而,黑客可以反汇编我的应用程序代码并找到我的应用程序的密码。但是,对于我的简单应用来说,这应该足够了。
    • 所以你混淆了你的代码,要求攻击者更聪明、更坚定。还要考虑是否可以通过监控设备和服务器之间的流量来推断或简单地提取任何内容。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 2021-01-10
      • 2021-02-26
      • 2011-11-20
      • 2021-10-14
      • 2021-01-17
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多