我正在为我的组织构建支付网关。不同的应用程序将能够将数据POST到网关以初始化事务。其中一些数据将是2个帐户代码和美元金额。
现在我的想法已转移到安全性。我担心最终用户能够在途中更改POST信息,最终支付更少费用或将资金存入错误的帐户。为了解决这个问题,我正在考虑添加应用程序可以传递的哈希值。
我认为每个预期的主机都有一个唯一的密钥。除了他们的数据,他们可以发送哈希值 随机盐+他们的密钥+ 2个帐户代码+美元金额,以及发送他们的随机盐。在支付网关上,我可以使用其传递的信息+唯一密钥重新生成该哈希,以查看数据是否已被更改。
这是否足够?我的理论有什么问题吗?
答案 0 :(得分:1)
这基本上是支付服务提供商使用的。诀窍是“密钥”是私有的,因此它不是您在帖子中发送的内容之一。你和发件人做了相同的哈希,只要它们相等,就没有篡改。
银行使用的另一个选项是将付款与邮件分开:从实际知道价格的地方(服务器?)生成付款请求,并将该号码传达给您的客户。然后让他们使用此号码与您的支付网关进行通信,而不是让他们发布任何金额。没有篡改。
第一个选项由我知道的几个支付提供商使用,第二个选项是我们目前直接在我们银行使用的支付提供商。
为了增加私人信息的安全性,让结果也包含你知道的哈希值,所以当有人(用户?)要求“感谢付费”页面时,你实际上可以检查它是区域用户。