PayPal IPN安全验证

Fac*_*les 3 php payment https paypal paypal-ipn

有PayPal IPN PHP示例代码https://www.x.com/developers/PayPal/documentation-tools/code-sample/216623

有人可以告诉我它是如何安全的,因为我没有得到它?

示例:我有一家网店.我没有https.

  1. 在我们的http://my-magazine.com/process_pp.php上从PayPal接收数据 此数据未加密,因为我的网站位于http.我对吗?所以(如果它没有加密)一些黑客可以改变它.
  2. 我们发送https请求以验证我们在paypal上的付款.
  3. PayPal使用http(而不是https)回答INVALID,因此黑客可以在VERIFIED上再次更改它.黑客获利.

请告诉我,我的错误在哪里.我很困惑,因为其他支付系统使用SecretKey,然后你应该验证他们发送的哈希.

Rob*_*ert 5

你的错误在第3步; 您通过HTTPS将数据发送回PayPal(准确地说是https://www.paypal.com/cgi-bin/webscr?cmd=_notify-validate)并且PayPal会在同一时间发送HTTP响应(SSL安全)与INVALID/VERIFIED响应的连接.
只要您确保验证提供给您的SSL证书,您就可以放心,如果您收到"已验证"回复,则数据是真实的.

顺便提一下,默认的IPN(PHP)示例代码强制证书和cn验证;

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
Run Code Online (Sandbox Code Playgroud)

只需确保在使用时指定了您信任的CA捆绑包,就可以了.另请参见禁用CURLOPT_SSL_VERIFYHOST(libcurl/openssl)的安全后果