【问题标题】:How to prevent connection to the server without my client application?如何防止在没有我的客户端应用程序的情况下连接到服务器?
【发布时间】:2012-09-27 22:25:03
【问题描述】:

一个客户要求我为其 iPhone 应用程序做一个后端服务器,并且只希望购买该应用程序的用户能够调用该服务器。 问题是他不想在应用程序中添加登录系统,所以在我看来,没有完全安全的方法可以防止没有他的应用程序的人调用服务器。 无论如何,即使不能完全阻止,也足以让没有应用程序的服务器难以访问。

实现这一目标的最佳方法是什么?同样,我不需要完全保护连接,没有敏感信息的传输,我只是想让那些想要在不支付应用程序的情况下利用服务器的人更复杂一点。

似乎最简单的想法是使用存储在客户端中并为服务器所知的密钥加密数据,以便仅反编译代码并找到密钥(当然而不是您的密钥)才能解密消息可以放置一个密钥列表,每 6/12/24 小时更改一次)。

这可能是一个合理的解决方案吗?

【问题讨论】:

    标签: iphone security encryption client-server


    【解决方案1】:

    这永远不可能。欢迎来到客户端-服务器架构的本质。你永远不能相信客户。只要确保您公开的功能是安全的。

    【讨论】:

    • 老实说,我很确定这一点......现在问题是要让客户清楚:)
    • @Fabio,没有什么比签署你的薪水而且连最基本的现代安全概念都不了解的人更糟糕的了。
    【解决方案2】:

    如果它是付费应用程序,您可以免费发布该应用程序,并锁定所有功能,直到用户进行应用程序内购买,然后您可以验证服务器上的收据,从而证明该设备是 iOS 设备?

    【讨论】:

      【解决方案3】:

      在客户端和服务器之间共享密钥似乎是一个不错的方法。但不要仅依赖于存储的密钥,而是尝试将它们与唯一标识符组合,例如 UUID,然后将其与组合密钥和 UUID 本身一起发送到服务器。

      此时用户的 UUID 将是他的标识符(用户名),组合键将是他的令牌(密码)。这将是一个类似登录的机制。

      【讨论】:

        【解决方案4】:

        SSL 连接不足以阻止其他人获取请求的 URL?或者甚至更好地使用带有基本身份验证的 SSL 连接?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-29
          • 2016-04-18
          相关资源
          最近更新 更多