php - 您可以通过 IP 安全地验证请求吗?

标签 php security payment-gateway

我目前正在将 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/

相关文章:

php - 如何在 php 中使用 javascript 变量?

jquery - 如何将 FormData 发送到 jQuery 中的操作?

php - 模态只显示一个人 - php mysql

php - 从 PHP 数组中删除特定的键值对

node.js - Electron 作为 Web 浏览器的安全影响

apache - 仅在用户登录时使用 https,否则在 Web 应用程序中使用

security - 提高安全性的最佳 PHP.ini 设置

Paypal 沙箱给出内部服务器错误

google-api - Google Wallet for Digital Goods 是否支持自动退款?

php 日历不显示一个月后的事件