【问题标题】:PHP - Paypal API form and security [closed]PHP - Paypal API 表单和安全性 [关闭]
【发布时间】:2011-12-28 18:16:46
【问题描述】:

我正在使用标准的 php paypal 表单在我的电子商务应用上付款。

我注意到只有 firebug 的人可以在通过“立即付款”按钮发送付款请求之前更改贝宝表单数据。

所以我想知道,拥有可以由新手“编辑”的付款表格是否是“标准”:/?

我们可以做些什么来防止这种情况发生?

【问题讨论】:

    标签: php security paypal


    【解决方案1】:

    我不同意;我确实认为这是你应该首先防止的事情。买家应支付的金额不应通过互联网公开发送。我们可以侥幸逃脱的时代早已过去。

    此外,支票不会阻止交易以不同的金额进行。它只会防止任何交易后的戏剧性事件。
    是的,您绝对应该在事务完成后运行检查,但即使理论上有人无法操纵amount,这也应该发生。

    有多种选择,您可以根据自己的要求选择最适合自己的,

    1. 什么都不做,只执行事务后检查(例如使用IPN)。
      最简单的。从代码的角度来看,您的 PayPal 集成看起来很破旧,您仍然会收到所有 0.01 美元的欺诈交易。

    2. 在按钮生成器中勾选“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=可选:如果您愿意,可以使用新的项目名称

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

    4. 改为实施 PayPal Express Checkout
      它可能是“最难”实现的,因为它由单个事务的 2-3 个 API 调用组成,它也是最灵活的。使用网站支付标准(“按钮”),只要买家点击“立即付款”,交易就完成了,Express Checkout 让买家“同意”PayPal 网站上的交易,您可以随时完成交易时间 0 - 3 小时后买方通过调用DoExpressCheckoutPayment API 调用最初同意付款。
      有关集成 Express Checkout 的简要说明,请参阅我在 Checkout my order basket with PayPal 上的回答

    【讨论】:

      【解决方案2】:

      这并不是一个巨大的安全风险,因为无论如何您都应该检查实际支付的金额!任何人都可以将数据发布到任何东西。它与您的表单甚至 Firebug 无关。

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

      【讨论】:

      • 嗯,我也认为这不是一个很大的安全风险,只是为了更舒服,你是对的!谢谢
      • 为什么投反对票?我的答案怎么错了?
      • 投反对票?我立即投票并检查了答案:O
      • @Brad:对不起,那是我,我想我在下面的回答可以解释原因。我投反对票的原因是,这是一个糟糕的建议,简单明了。您基本上是在宣传发送交易数据。这不仅是一个糟糕的建议,而且如果商家/开发人员开始考虑其电子商务网站上的支付解决方案,它也会产生一种危险的心态。这就像说“哦,Steam 泄漏还不错,所有卡数据都被加密了”,但消除一个障碍(首先访问数据)才是第一个灾难。
      • 哦,别忘了您的 PayPal 账户存在潜在问题,当诈骗者开始通过您的账户使用被盗卡处理数百笔 0.01 美元的交易时。回顾一下;简而言之,我投了反对票,因为我坚信检查输入和输出,而不仅仅是输出(交易后支付的金额)
      猜你喜欢
      • 2012-11-21
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 2013-05-28
      • 2011-07-04
      • 2013-08-21
      相关资源
      最近更新 更多