我在预订流程结束时有以下表格(简化版):
<form action="https://www.paypal.com/cgi-bin/webscr" name="paypalForm" method="post">
<input type="hidden" name="amount" value="<?=$price;?>">
<input type="hidden" name="business" value="business@email.co.uk">
<input type="hidden" name="notify_url" value="http://website.co.uk/ipn">
</form>
我只省略了地址名称等内容。因此,当他们通过 Paypal 付款时,我使用 paypal IPN 在数据库中将它们标记为已付款。 然而..
我已经到了我的预订系统的末尾并查看了网页的来源,修改了企业电子邮件地址和金额。我还没有尝试过完整的交易,但肯定有 Paypal 中的“notify_url”向我的服务器发送 IPN 消息并将此人标记为已付款?这不是可怕的安全吗?当然,这不是所有贝宝付款的运作方式,我一定是遗漏了一些东西。
我能想到两件事可能会阻止这种情况:
- 如果我删除“notify_url”,我在paypal 中设置的 IPN URL 是否可以使用?贝宝在隐藏的 var 上放置了什么值
notify_url
,它会覆盖贝宝后端的设置吗? - 在我的 IPN 代码中,我可以检查业务和金额。我目前没有,因为我没有阅读文档中我应该阅读的任何地方。但现在,我想这也许是一个非常好的主意。