好的,此问题适用于供应商向第三方开发人员分发SDK二进制文件以供使用的大多数情况。但为了便于讨论,我们假设我正在开发Objective-C中的iOS SDK,并计划将其交给任何在我们的门户网站上注册的开发人员。
此SDK将访问我们服务器上的服务。由于我们服务器上的资源是有限的(实际上,在任何服务器上),我们在SDK中内置了一些简单的限制机制,以防止错误地使用API,比如将一个远程过程调用放在一个循环中无论是否有目的,每秒执行10K次。任何时候发生这样的事情,我们都会抛出。
只要开发人员按原样使用二进制文件,就可以了。但是,如果有人试图做一些有趣的事情,比如通过更改二进制文件来破坏我们的限制机制,然后链接到他们的应用程序呢?在这种情况下,我们的客户端限制机制不再有效,并且他们的应用程序运行的一些实例可能会导致我们的服务器停机。
我们的想法是我们可以在SDK二进制文件中构建一些校验和验证机制,然后在运行时初始化期间计算二进制文件的校验和,并将其与二进制文件中的校验和进行比较。如果我们的二进制文件被篡改,我们取消初始化,并阻止主机应用程序使用我们的资源。
我们已经在服务器上安装了服务器端限制机制。但是我们也在客户端上进行限制,因为许多未经节制的服务器请求仍会在服务器上不必要地消耗资源,即使我们已经在服务器上进行了限制。
这是一个可行的想法吗?任何人都有这方面的经验吗?
谢谢!