PHP - Paypal支付API表单和安全性

3
我正在使用标准的php paypal表单来处理我的电子商务应用程序的付款。
我注意到只要有firebug就可以在发送“PAY NOW”按钮的支付请求之前更改paypal表单数据。
所以我想知道,是否有一种“标准”支付表单可以被新手“编辑”:/?
我们可以做些什么来防止这种情况发生?
2个回答

4
我不同意;我认为这是首先应该避免的问题。买家应支付的金额不应该公开发送到互联网上。我们可以逃避这个问题的时代已经过去了。
此外,支票不能防止交易以不同的金额进行。它只能防止任何交易后的戏剧性事件发生。
是的,即使某人不能在理论上操纵amount,您也应该在交易完成后运行检查。
有几种选项,您可以根据自己的要求选择最适合您的选项。
  1. 仅进行事务后检查(例如使用IPN)。
    这是最简单的方法。从代码角度来看,您的PayPal集成会显得有些杂乱无章,并且您仍将收到所有那些 $0.01 的欺诈交易。

  2. 在按钮生成器中选择“使用 PayPal 托管按钮”选项,并使用 PayPal 的BMUpdateButton API 动态更改按钮的金额。
    BMUpdateButton 的示例请求如下:

    USER=您的 API 用户名
    PWD=您的 API 密码
    SIGNATURE=您的 API 签名
    METHOD=BMUpdateButton
    VERSION=82.0
    HOSTEDUBTTONID=所需值
    BUTTONTYPE=按钮类型。例如 BUYNOW
    BUTTONCODE=要返回的代码类型。例如 HOSTED
    L_BUTTONVAR0=amount=新金额,小数点作为分隔符
    L_BUTTONVAR1=item_name=可选:如果需要,可以输入新的商品名称

  3. 同时使用 BMCreateButton 和 BMUpdateButton API 来创建和更新您的 PayPal 按钮。
    您还可以使用 BMCreateButton API 创建新按钮,或使用BMButtonSearch API 搜索存储的所有托管按钮的列表(例如自动查找您的按钮的 hosted_button_id)。

  4. 使用 PayPal 快捷结账代替
    这可能是最难实现的,因为单个交易需要 2-3 个 API 调用,但它也是最灵活的。与网站付款标准版(“按钮”)在买家点击“现在支付”后立即完成交易不同,快捷结账允许买家在 PayPal 网站上“同意”交易,并且您可以在买家最初同意付款后的任何时间 0 - 3 小时内通过调用 DoExpressCheckoutPayment API 调用来最终确定交易。
    有关集成快捷结账的快速概述,请参见我的答案:使用 PayPal 结账我的订单购物篮


1

这并不是一个巨大的安全风险,因为您应该检查实际支付的内容!任何人都可以向任何地方发布数据。这与您的表单或甚至Firebug无关。

您可以将该按钮信息存储在PayPal的服务器上,但那样就不能动态生成了。当您使用他们的向导创建按钮代码时,有一个选项可以实现此功能。


我认为这并不是一个很大的安全风险,只是更加舒适而已。你说得对!谢谢。 - itsme
为什么要踩我?我的回答哪里错了吗? - Brad
踩什么?我立刻点了赞并检查了答案 :O - itsme
@Brad:抱歉,那是我,我想我的下面的回答会解释为什么。我给它投了反对票,因为这是错误的建议,简单明了。你基本上在推广在明文中发送交易数据。这不仅是错误的建议,而且如果商家/开发者开始这样考虑他们电子商务网站上的支付解决方案,还会产生危险的心态。这就像说“哦,那个Steam泄漏并不那么糟糕,所有的卡数据都被加密了”,但是第一个灾难是消除了一个屏障(首先访问数据) 。 - Robert
哦,而且不要忘记你的PayPal账户可能会出现问题,当骗子开始使用盗窃的信用卡在你的账户上进行大量0.01美元的交易时。简而言之,我投了反对票,因为我坚信应该检查输入和输出,而不仅仅是输出(交易后支付的金额)。 - Robert
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接