我想让我的服务器 API 只接受来自我自己的应用程序的请求,以防止我的服务的其他“流氓”客户端。
据我了解,执行此操作的方法是使用应用程序发送的“客户端证书”,并且 Web 服务器配置为进行验证。
但是,我在 Heroku 中托管我的应用程序,并且我相信这样做是不可能的,所以我正在寻找能够让我实现这一目标的尽可能好的东西。
我想也许我可以有一个密钥对,其中客户端使用私钥签署某个商定的令牌(加上一些随机盐,这样加密的字符串总是不同的),服务器使用公钥来验证令牌(并拒绝重复的盐以防止重播)。或者客户端可能使用其私钥或类似的东西签署整个请求。
这个想法是,即使有人设法绕过我们的 SSL pinning(可能使用 iOS 终止开关之类的东西)并检查我们的流量并弄清楚我们的 API 是如何工作的,除非他们对二进制文件进行逆向工程,否则他们仍然无法调用我们提取该证书/私钥。我知道这样做是可能的,我只是想设置尽可能多的障碍。
有什么好的方法可以做到这一点?