2011-11-21 37 views
4

我目前正在将NAB Transact支付网关集成到电子商务商店中。一旦支付完成后,NAB Transact系统会向我们的端点发送POST请求,以便我们处理结果。您可以通过IP安全地验证请求吗?

问题是,POST请求中没有包含安全散列/标记,我们可以使用它来回发到NAB Transact系统以验证请求是真实的并且没有被欺骗。更糟糕的是,NAB Transact系统甚至没有用于任何信息验证的API,实质上是非常糟糕的安全性!

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

是不是依靠IP认证不安全,因为它可以被欺骗?

+0

您提出了多个问题。您应该创建第二个问题,询问您应该如何实施身份验证。 – mikerobi

+3

没有不敬的意图,但这是有安全经验的人的工作。提出这样的问题是了解可能的解决方案和问题的好方法,但采取一种即学即用的方法来实际实施安全措施,几乎可以保证发生灾难。 –

+2

@adam如果您没有问题的答案,请勿发布。 NAB交易是一种完全托管的解决方案,符合PCI规范,无需存储,处理甚至输入到我们的系统中。为什么我的问题只是针对NAB系统发布的信息,NAB系统根据其文档没有正确的身份验证手段。如果我对PCI合规性或安全性不熟悉,我不会知道与请求没有安全令牌和API端点以验证请求相关的问题。所以它不会像你一样学习,这是5年的经验。 – cappuccino

回答

0

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

烨 - 这是一个问题好吗:)

不是依靠IP认证并不安全,因为它可以 欺骗?

这不是安全的!

+0

为什么不解释你将如何使用欺骗性IP执行TCP握手。 – ThiefMaster

+0

源路由:)? – paulsm4

1

基于IP地址的认证是好的,如果你:

  • 知道IP地址的列表(即由支付提供商所使用的那些)
  • 的IP地址是静态的(很明显,但如果请求实际上由提供者发送,而不是通过例如在“支付成功”页面上的隐藏表格)
  • 他们立即通知你任何改变(或者你的脚本可能拒绝有效的请求或接受来自未被使用的IP的请求提供者)
  • all sys可以使用IP地址(即假设数据中心的支付提供商的服务器没有使用一些糟糕的网络设置)足够信任不发送任何虚假通知。

欺骗源IP是不可能的,因为TCP使用三方握手和欺骗IP握手会失败。

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

+0

TCP/IP欺骗有很多种。并不是所有人都使用连接设置(3次握手)。他们中的任何一个,如果成功的话,都会破坏安全。 – paulsm4

+0

向我展示*一个*示例,了解如何正确创建带有欺骗IP的** TCP **连接。 – ThiefMaster

+0

哦,即使通过默默无闻的安全性是一件非常糟糕的事情 - 潜在的攻击者如何知道发送通知请求的目标URL呢? – ThiefMaster

相关问题