我正在考虑如何验证只有授权的客户端软件才能访问Web服务。
现在我并不是说我只希望向授权用户开放Web服务,我只希望我的Web服务对我认为可以接受的客户开放。
让我们看一个用例。我有一个我提供的Web服务,以及连接到该Web服务的软件。在这种情况下,服务是基于REST的。我不希望其他人创建客户端并访问我的Web服务,并从我的服务中获利,因为这项服务是一组非常特殊的数据,我只需要保护已批准的客户端。
其他地方的一些不正确的建议是确保用户拥有帐户。但是,这只能阻止未经授权的用户,它不会阻止某人创建客户端并允许这些真正的用户使用其他人的软件访问我的Web服务。
另一个建议是在软件中包含某些识别详细信息或客户端证书,但对于某人来说,进行逆向工程并获取这些详细信息然后复制请求就太容易了。
我不确定我想要做什么甚至可能,但我希望有人可以证明我错了。
答案 0 :(得分:2)
如果您放弃软件,没有什么能完全阻止第三方软件的创建,类似于模仿您现有的客户端软件。您可以通过混淆客户端二进制代码的一部分或虚拟化这些部分(例如VMProtect工具)来使这种“克隆者”的任务变得更加复杂,但正如所说的那样,这使得工作更加困难,但并非完全不可能。您可能希望重新考虑有关客户端软件的业务战略。
实践表明,如果您的服务器端服务很受欢迎,无论您做什么,都会出现克隆。这仅仅是因为您无法使用您的客户端软件满足所有用户,并且如果出现了不满意用户的临界质量,他们将开始创建更好的客户端软件。在这种情况下,您可以做的最好的事情是提供免费的客户端SDK和社区:这些步骤将使第三方客户端软件的创建更加可控。