【问题标题】:Is comparing the receiver email a critical part of the Paypal IPN script?比较收件人电子邮件是否是 Paypal IPN 脚本的关键部分?
【发布时间】:2012-05-14 08:01:15
【问题描述】:

在标准的 Paypal IPN PHP 脚本中,有这行来评估支付是否成功:

if ($_POST["payment_status"] == "Completed" && $_POST["receiver_email"] == $email)

评估付款状态的目的是显而易见的。但据我所知,比较的第二部分似乎并没有增加多少价值。

据我了解,$email 值只是您希望发送错误和成功付款确认电子邮件的地方。 receiver_email 只是在 Paypal 上附加到商家帐户的电子邮件。

在我看来,这些可能不是一回事。尤其是在使用 Paypal 沙盒进行测试时,它一直让我感到困惑,因为商家电子邮件地址部分是在我设置帐户时自动生成的,所以无论如何我都无法接收电子邮件。

因此,由于两个电子邮件地址可能不同,我最初的想法是这种比较并不那么重要。但也许我遗漏了一个重要的安全考虑。

这种比较重要吗?

【问题讨论】:

    标签: paypal


    【解决方案1】:

    是的,在大多数情况下,这是一项关键检查,因为如果您在发布请求(按钮)中发送 IPN,恶意用户可能会向他自己的 PayPal 地址付款。

    由于您有 2 个 paypal 帐户,因此更换起来更容易

    $_POST["receiver_email"] == $email
    

    in_array($_POST["receiver_email"], array("myemail1", "myemail2"))
    

    即使您的 IPN 网址在您的帐户中被很好地隐藏和配置,我个人也不会跳过接收方检查。我的简单方法将使您免受恶意请求的侵害。

    【讨论】:

    • 请问您检查“业务”变量是否足够?好像和收件人邮箱一样
    猜你喜欢
    • 1970-01-01
    • 2012-05-24
    • 2015-01-27
    • 2014-07-25
    • 1970-01-01
    • 2014-04-11
    • 2013-09-30
    • 2015-12-13
    • 1970-01-01
    相关资源
    最近更新 更多