【问题标题】:Securely downloading In-app purchases?安全下载应用内购买?
【发布时间】:2011-08-02 08:44:59
【问题描述】:

我从苹果商店成功验证了应用内购买,然后我的应用从我的服务器下载了内容。问题是如果用户嗅探传出的 url 请求,他们将可以访问我的所有内容。我搜索了互联网,发现安全性不是一个简单的问题,如果你真的很认真,你应该使用多层。我只是一名开发人员,正在权衡风险/努力,我真的只想让窃取我的内容变得更加困难,而不是仅仅查看传出的 url 请求。

有什么我可以做的吗?仅验证收据是不够的,我想让我的服务器只允许 iPhone/iPad 从某些文件夹下载,或者提供自定义 url 到隐藏的文件夹。

编辑: 同时,我发现这个question 是相关的,但它并没有直接回答我的问题。事实上,提供的唯一解决方案对我来说不是一个解决方案,因为我希望我的内容在同一用户拥有的所有设备上都可用。我只是不希望有人能够在浏览器中输入他们找到的 URL 并下载我的所有内容。

【问题讨论】:

    标签: iphone security in-app-purchase


    【解决方案1】:

    您可以切换到 TLS 或 SSL HTTP 会话吗?这将减少嗅探 URL 的机会。

    如果您生成 extremely complicated per-user URLs,那么您可能会相信客户不能简单地猜测他们未购买的内容的 URL。

    例如,不要通过以下方式提供您的新内容:

    http://ns6string.example.org/app-content/spanish/verbs/
    

    在不同的网址上提供:

    http://ns6string.example.org/app-content/sarnold/
       646718ae5d25cac14775ca7074cf4808/b493881b4376a5162a38114d1bd2d88a
    

    我生成了那些荒谬的 URL:

    $ echo "sarnold spanish" | md5sum
    646718ae5d25cac14775ca7074cf4808  -
    $ echo "sarnold verbs" | md5sum
    b493881b4376a5162a38114d1bd2d88a  -
    

    每个用户都可能得到自己的一堆可怕的 URL,而且要扭转它需要付出比平均更多的努力。 (当然,对于this这个简单的例子,如果我刚买了“西班牙语动词包”,我很有可能猜测 URL格式。你能做的不多这样做,因为无论你把它做得多么复杂,有调试器访问权限或有大量空闲时间的人可能会弄清楚 URL 混淆机制。)

    这就是我选择简单机制的原因:TLS 和散列应该足够快,以便您不会浪费太多您的时间来保护您的内容,而不是编写新功能或修复最后几个烦人的错误。

    【讨论】:

    • 是的,但是如何为每个指向同一服务器位置的用户生成唯一的 url?
    • 这是基于只有几百件待售物品;当您看到对/app-content/sarnold/ 的请求时,您会为您提供的每条内容生成"sarnold" + name_of_content MD5 哈希列表-然后查找与特定文件名匹配的哈希,并将该文件的内容发送到用户。如果您有数千或数万件待售物品,则取决于销售的频率不超过每两三秒一次,具体取决于确切的数字和 CPU 速度。 (我的电脑上 10000 个 MD5sum 需要 17 秒。太长了。:)
    【解决方案2】:

    您不仅可以验证收据,还可以使用购买者独有但不属于 URL 的部分收据来混淆或加密下载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多