你能通过IP安全地验证请求吗?

时间:2011-11-21 22:56:10

标签: php security payment-gateway

我目前正在将NAB Transact支付网关整合到电子商务商店中。付款处理完毕后,NAB Transact系统会向我们的终端发送POST请求,以便我们处理结果。

问题是POST请求不包含我们可以用来回发到NAB Transact系统的安全散列/令牌,以验证请求是真实的而不是欺骗。更糟糕的是,NAB Transact系统甚至没有用于任何信息认证的API,本质上是非常糟糕的安全性!

有没有办法安全地验证这些请求?例如,检查请求是否来自NAB交易系统运行的已知IP地址列表?或反向查找IP?有哪些选项以及如何在PHP中实现它?

不依赖于IP身份验证并不安全,因为它可能会被欺骗吗?

2 个答案:

答案 0 :(得分:1)

如果您:

,基于IP地址的身份验证就可以了
  • 知道IP列表(即支付提供商使用的IP)
  • IP是静态的(显然,但是如果请求实际上是由提供商发送的,而不是例如通过隐藏表单在“支付成功”页面上就是这种情况)
  • 他们会立即通知您任何更改(或者您的脚本可能会拒绝有效请求或接受来自提供商未使用的IP的请求)
  • 所有可以使用IP地址的系统(即支付服务提供商的服务器,假设数据中心没有使用一些糟糕的网络设置)是可信的,不会发送任何虚假通知。

由于TCP使用三次握手并且使用欺骗性IP,握手将失败,因此无法欺骗源IP。

所以基本上:如果满足某些基本标准(见上文),通过IP进行身份验证是可以接受的,但当然如果他们为您提供了验证通知的方法,那么通过调用他们身边的API会更安全或者使用加密签名(更好,因为它不会因无法访问的远程服务器而失败)。

答案 1 :(得分:0)

  

问题是POST请求不包含安全散列/令牌   我们可以用来回发到NAB Transact系统   验证请求是真实的而不是欺骗

是的 - 这是一个问题好吧:)。

  

不依赖于IP身份验证而不是那么安全,因为它可以   欺骗?

一点也不安全!