预订过程结束时(简化),我有以下表格:

<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”,我在贝宝中设置的IPN URL可以代替吗?贝宝在隐藏的var notify_url上放置什么值,它会覆盖贝宝后端的设置吗?
在我的IPN代码中,我可以检查业务和金额。我目前不在,因为我没有阅读文档中的任何内容。但是现在,我认为也许这将是一个非常好的主意。

最佳答案

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

关于php - Paypal 安全漏洞?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16143548/

10-09 02:27