2

我在预订流程结束时有以下表格(简化版):

<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 消息并将此人标记为已付款?这不是可怕的安全吗?当然,这不是所有贝宝付款的运作方式,我一定是遗漏了一些东西。

我能想到两件事可能会阻止这种情况:

  1. 如果我删除“notify_url”,我paypal 中设置的 IPN URL 是否可以使用?贝宝在隐藏的 var 上放置了什么值notify_url,它会覆盖贝宝后端的设置吗?
  2. 在我的 IPN 代码中,我可以检查业务和金额。我目前没有,因为我没有阅读文档中我应该阅读的任何地方。但现在,我想这也许是一个非常好的主意。
4

1 回答 1

1

PayPal 无法进行任何检查以了解正确的金额或使用的电子邮件地址,或者 IPN URL 应仅用于特定的 PayPal 帐户。您的选项将写在您已经提到的附加检查中。除了您已经说明的两种解决方法之外,第三种选择是使用 PayPal 的BMCreateButton API即时创建托管或加密按钮。然后买家只会看到加密的按钮代码,他们将无法查看您的 HTML 按钮代码。因此,他们将无法修改任何变量,或查看它们当前设置的内容。

于 2013-04-22T13:42:23.470 回答