正如我们许多人所做的那样,我正在实施PayPal解决方案。通过阅读开发人员文档,我了解到IPN是异步消息协议,可以触发付款实现。
PayPal有正式的方式来回应这些消息以及如何验证IPN侦听器上IPN消息的来源。收听者从PayPal收到的每条IPN消息都包含一个用户代理HTTPS请求标头,其值为 PayPal IPN(https://www.paypal.com/ipn)他们突出显示不使用此标头验证IPN真的来自PayPal并且没有被篡改。相反,要验证这些内容,您必须使用下面概述的IPN身份验证协议,该协议包含四个步骤。
下图中的步骤2,3,4和5显示了此协议。
正如您在上面所看到的,他们建议使用单个[已验证] [无效]消息进行回复,以防止欺诈。
我的想法是,任何虚假的IPN模拟器都可以回复"验证"状态消息给听众,所以没有意义。因此,我的问题是:
我想知道,如果我们可以交换一个秘密密钥,它会更可靠。
欢迎任何想法。感谢。
答案 0 :(得分:0)
协议的安全性取决于对PayPal的TLS证书的验证。
由于某些CA未能检查他们颁发证书的人,因此您不能依赖于通过CA进行检查。您应该保留一份您信任的PayPal证书列表。然后在连接时验证使用的证书是否在列表中。进一步选择足够强度的加密方法。
答案 1 :(得分:0)
此过程的安全性取决于您将验证请求发送到PayPal ,而不是发送给攻击者:您只需通过硬连接相关URL即可完成此操作,而不是将其从请求。
为什么他们不仅仅要求您依赖客户端证书身份验证是另一个问题,但它已经20年了,即使在那时设计也很差。