我们开发了一个集成了第三方服务的Web应用程序,其中一个集成是第三方服务调用我们的API服务器来更新一些状态(类似于支付网关)。
最初,服务器上的API没有身份验证,因此我们认为应该进行一些检查来验证回调是否可信。
第三方服务已经完成了我们的项目,拒绝修改他们的代码,而且他们的服务器有动态IP,所以我们无法通过IP加入白名单。他们的工程师建议我们将他们的主机名加入白名单。
我们已经考虑过获取源IP和反向DNS。这种方法仅在某些情况下有效,并且不起作用,例如云VM的自定义域。解析的主机名将是VM的主机名,而不是自定义域。
他们的工程师听起来这是一个常见的做法和容易实现,我们错过了什么?我们有完全控制的防火墙,DNS记录和API代码在我们这边。
1条答案
按热度按时间xzabzqsa1#
我认为通常的做法是为你的情况下添加相互认证。你的回调接口看起来像一个开放的API,你需要验证回调参数签名加密的AES或RSA算法。如果第三方坚持不改变代码,他们可以添加一个代理服务器,有一个固定的IP。