代码之家  ›  专栏  ›  技术社区  ›  sksamuel

验证Web服务的客户端软件

  •  1
  • sksamuel  · 技术社区  · 14 年前

    我正在考虑如何验证Web服务只能由授权的客户机软件访问。

    现在我的意思不是我只希望Web服务向授权用户开放,我只希望我的Web服务向我认为可以接受的客户开放。

    让我们来看一个用例。我提供了一个Web服务,以及连接到该Web服务的软件。在这种情况下,服务是基于REST的。我不希望其他人创建客户机、访问我的Web服务并从我的服务中获利,因为此服务是一组非常特殊的数据,我只需要将这些数据安全地保存到经过批准的客户机上。

    其他地方的一些错误建议是为了确保用户拥有帐户。但是,这只会阻止未经授权的用户,不会阻止某人创建客户端,并允许这些真正的用户使用其他人的软件访问我的Web服务。

    另一个建议是在软件中包含某些标识详细信息或客户端证书,但对于某些人来说,反向工程并获取这些详细信息,然后复制请求太容易了。

    我不确定我想做的事情是否可能,但我希望有人能证明我是错的。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Eugene Mayevski 'Callback    14 年前

    没有什么可以完全阻止第三方软件的创建,类似于模仿您现有的客户机软件,如果您放弃了您的软件。通过混淆客户机二进制代码的某些部分或虚拟化这些部分(如vmprotect工具),您可以使这种“克隆器”的任务更加复杂,但正如所说,这会使工作更加困难,但并非完全不可能。您可能需要重新考虑与客户机软件相关的业务策略。

    实践表明,如果您的服务器端服务很流行,那么无论您做什么,克隆都会出现。这仅仅是因为你不能让所有用户都满意你的客户机软件,如果不满意的用户的临界质量出现,他们将开始创建更好的客户机软件。在这种情况下,您所能做的最好的就是提供一个免费的客户端SDK和一个社区:这些步骤将使第三方客户端软件的创建更加可控。