4

我的网站上有这段代码:

<form method="post" action="process.php">
    <input type="hidden" name="itemname" value="1" /> 
    <input type="hidden" name="itemnumber" value="2" />
    <input type="hidden" name="itemQty" value="1" />
    <input type="hidden" name="itemprice" value="17"> 
</form>

此代码向 process.php 发送一个 POST,它会打开一个 paypal 类来进行付款。

一切都很好,但我有一个很大的麻烦。关键是,如果我使用 FireBug 编辑任何值,例如“itemprice”,任何人都可以更改默认值,并在处理付款时将 itemprice 替换为任何其他数量。

我该如何解决这个问题?有任何想法吗?

谢谢。

4

3 回答 3

0

您可以使用 PayPal 即时付款通知系统 (IPN)。您将 URL 提供给您网站上可以处理付款的脚本。当您登录到您的 PayPal 帐户时,它就在某个地方。

每次进行新付款时,PayPal 都会向您的 IPN 脚本发送一个请求,其中包含付款的所有详细信息(项目 ID、名称、价格,无论您想要什么,然后您可以使用您的数据库在脚本中验证价格是否匹配提供的项目 ID。

在我看来,它很容易实现并且非常灵活。它在 PayPal 网站上也有很好的记录。理解它并不需要太长时间。

于 2013-04-16T19:21:45.707 回答
0

您永远不应该依赖网络表单中的价格。因为项目有它的 ID,所以只将 ID 和所需数量发送到 process.php 是完全有效的。反过来,这应该直接从源(数据库、配置...)中获取价格,而不是从(可能被篡改的)Web 表单数据中获取价格。

于 2013-07-05T12:35:42.803 回答
0

加密是阻止这种情况的唯一方法,您在客户端无能为力。您可以尝试添加一些验证服务器端或使用 _SESSION,但这些是您唯一的选择。

于 2013-04-16T19:20:01.730 回答