我构建了一个不错的 REST/JSON API,其他公司(我们的客户)将其用作 B2B 服务。我们的每个客户都有一个用户名/密码对,我们还使用 HTTPS 并验证服务请求的源 IP。使用服务需要花钱,客户按月收取服务使用费。
现在,一些客户正在构建他们分发给用户(B2C - 最终用户)的移动应用程序。并非我们服务的所有这些最终用户都有服务器,并且他们希望直接从智能手机使用服务(从技术上讲,JSON/REST 没什么大不了的)。
问题是我不确定如何保护服务免受欺诈。什么会阻止第三方开发人员反汇编客户的移动应用程序并复制他们的用户名/密码/任何安全凭证并在他的应用程序中使用?这将允许他使用该服务并向我们的一位合法客户收取使用费!
我很确定这个问题没有完美的加密解决方案,除非最终用户被要求对某些服务器进行身份验证。但情况并非总是如此。
作为最后的手段,我想我可以为 Android / iPhone 分发一个混淆库,这至少会给人一种安全的错觉......
编辑(澄清):
让我试着简化一下场景。
- 我有一个不可破解的 Web 服务器,它提供 JSON REST API。
- 移动客户端直接访问我的 API。他们的 IP 无法验证。他们正在运行标准操作系统(Android / IOS)。
- 不涉及其他服务器。
- 我无法访问手机的 IMEI(它被认为是私人的),这对我也没有帮助,因为我不认识最终用户。
- 有几个这样的合法移动应用程序,由访问我们 API 的不同公司开发。
- 当前的安全性(用户名/密码)很容易被流氓公司破解。所述流氓公司反汇编合法的移动应用程序并将用户名/密码复制到他们的非法应用程序中。他们分发此应用程序和利润(API 使用由他们窃取凭据的公司收取)。
这可以停止吗?