【发布时间】:2011-12-28 18:16:46
【问题描述】:
我正在使用标准的 php paypal 表单在我的电子商务应用上付款。
我注意到只有 firebug 的人可以在通过“立即付款”按钮发送付款请求之前更改贝宝表单数据。
所以我想知道,拥有可以由新手“编辑”的付款表格是否是“标准”:/?
我们可以做些什么来防止这种情况发生?
【问题讨论】:
我正在使用标准的 php paypal 表单在我的电子商务应用上付款。
我注意到只有 firebug 的人可以在通过“立即付款”按钮发送付款请求之前更改贝宝表单数据。
所以我想知道,拥有可以由新手“编辑”的付款表格是否是“标准”:/?
我们可以做些什么来防止这种情况发生?
【问题讨论】:
我不同意;我确实认为这是你应该首先防止的事情。买家应支付的金额不应通过互联网公开发送。我们可以侥幸逃脱的时代早已过去。
此外,支票不会阻止交易以不同的金额进行。它只会防止任何交易后的戏剧性事件。
是的,您绝对应该在事务完成后运行检查,但即使理论上有人无法操纵amount,这也应该发生。
有多种选择,您可以根据自己的要求选择最适合自己的,
什么都不做,只执行事务后检查(例如使用IPN)。
最简单的。从代码的角度来看,您的 PayPal 集成看起来很破旧,您仍然会收到所有 0.01 美元的欺诈交易。
在按钮生成器中勾选“Host button with PayPal”选项,并使用 PayPal 的BMUpdateButton API 动态更改按钮的数量。
BMUpdateButton 请求示例如下所示:
USER=您的 API 用户名
PWD=您的 API 密码
SIGNATURE=您的 API 签名
方法=BMUpdateButton
版本=82.0
HOSTEDUBTTONID=
的值
BUTTONTYPE=按钮的类型。例如。立即购买
BUTTONCODE=您想要返回的代码类型。例如。托管
L_BUTTONVAR0=amount=以句点为分隔符的新金额
L_BUTTONVAR1=item_name=可选:如果您愿意,可以使用新的项目名称
同时使用 BMCreateButton 和 BMUpdateButton API 来通过 PayPal 创建和更新您的按钮。
您还可以使用 BMCreateButton API 创建新按钮,或使用 BMButtonSearch API 搜索所有已存储托管按钮的列表(例如,自动查找按钮的 hosts_button_id)。
改为实施 PayPal Express Checkout
它可能是“最难”实现的,因为它由单个事务的 2-3 个 API 调用组成,它也是最灵活的。使用网站支付标准(“按钮”),只要买家点击“立即付款”,交易就完成了,Express Checkout 让买家“同意”PayPal 网站上的交易,您可以随时完成交易时间 0 - 3 小时后买方通过调用DoExpressCheckoutPayment API 调用最初同意付款。
有关集成 Express Checkout 的简要说明,请参阅我在 Checkout my order basket with PayPal 上的回答
【讨论】:
这并不是一个巨大的安全风险,因为无论如何您都应该检查实际支付的金额!任何人都可以将数据发布到任何东西。它与您的表单甚至 Firebug 无关。
您可以将该按钮信息存储在 PayPal 的服务器上,但不能动态生成。当您使用他们的向导为您创建按钮代码时,有一个选项。
【讨论】: