在标准的Paypal IPN
PHP脚本中,有一行来评估付款是否成功:
if ($_POST["payment_status"] == "Completed" && $_POST["receiver_email"] == $email)
评估付款状态的目的很明显.但据我所知,比较的第二部分似乎没有增加太多价值.
根据我的理解,$email值只是您想要发送错误和成功付款确认电子邮件的地方. receiver_email只是附在Paypal上的商家帐户的电子邮件.
在我看来,这些可能不是一回事.特别是在使用Paypal沙箱进行测试时,我一直在绊倒我,因为当我设置帐户时,商家电子邮件地址部分是自动生成的,所以它不是我无论如何都可以收到电子邮件的地方.
因此,由于两个电子邮件地址可能不同,我最初的想法是这种比较并不那么重要.但也许我缺少一个重要的安全考虑因素.
这种比较是否很重要?
最佳答案 是的,在大多数情况下这是一项严格的检查,因为如果您在发布请求(按钮)中发送IPN,恶意用户可能会向自己的PayPal地址付款.
由于您有2个paypal帐户,因此更容易更换
$_POST["receiver_email"] == $email
同
in_array($_POST["receiver_email"], array("myemail1", "myemail2"))
就个人而言,即使您的IPN网址已在您的帐户中隐藏和配置,我也不会跳过接收方检查.我的简单方法可以确保您免受恶意请求的侵害.