我目前正在将 NAB Transact 支付网关集成到电子商务商店中。处理完付款后,NAB Transact 系统会向我们的端点发送 POST 请求,以便我们处理结果。
问题是 POST 请求不包含我们可以用来回发到 NAB Transact 系统以验证请求是真实的而不是欺骗性的安全哈希/ token 。更糟糕的是,NAB Transact 系统甚至没有用于任何信息的任何身份验证的 API,从本质上讲,安全性非常差!
有没有办法安全地验证这些请求?例如,检查请求是否来自 NAB 交易系统运行的已知 IP 地址列表?还是反向查一个IP?有哪些选项?您将如何在 PHP 中实现它?
IP 身份验证不是很安全,因为它可以被欺骗吗?
最佳答案
如果您满足以下条件,则可以使用基于 IP 地址的身份验证:
- 了解 IP 列表(即支付提供商使用的 IP)
- IP 是静态的(显然,但如果请求实际上是由提供商发送的,而不是例如通过“付款成功”页面上的隐藏表单发送的,情况就是如此)
- 他们会立即通知您任何更改(或者您的脚本可能会拒绝有效请求或接受来自提供商不再使用的 IP 的请求)
- 所有可以使用 IP 地址的系统(即假定数据中心未使用某些糟糕的网络设置的支付提供商的服务器)都足够可信,不会发送任何虚假通知。
欺骗源 IP 是不可能的,因为 TCP 使用三向握手并且使用欺骗性 IP 握手会失败。
所以基本上:如果满足一些基本条件(见上文),通过 IP 的身份验证是可以接受的,但是如果他们为您提供一种验证通知的方法当然会更安全 - 或者通过调用他们这边的 API或使用加密签名(更好,因为它不会因远程服务器无法访问而失败)。
关于php - 您可以通过 IP 安全地验证请求吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219716/