PayPal IPN会向通知URL发送一个具有变量数量字段的POST请求,为了确认该POST请求的合法性,我们需要重新提交相同的请求,并附加一个额外的cmd=_notify-validate
字段到PayPal,然后PayPal会回复VERIFIED
或INVALID
。
我的问题是,为什么我们需要重新向PayPal发送请求呢?难道像这样不就足够了吗?
if (preg_match('~^(?:.+[.])?paypal[.]com$~i', gethostbyaddr($_SERVER['REMOTE_ADDR'])) > 0)
{
// request came from PayPal, it's legit.
}
如果我们可以相信服务器正确解析IP地址,那么我认为我们可以相信PayPal的所有请求,不是吗?