【问题标题】:How can I secure transactions made with client-side PayPal Smart Checkout buttons?如何保护使用客户端 PayPal 智能结账按钮进行的​​交易?
【发布时间】:2020-01-12 16:27:51
【问题描述】:

我正在尝试在我的网站上制作一个智能结帐按钮,该按钮目前在客户端 100% 运行。

我根据客户端的购物车内容将金额传递给createOrder 函数。现在,我知道金额完全可以被篡改,而 PayPal 无法知道客户付款不足。

我们是一小群人,预计销量会很低,因此我们不会有任何问题检测到这些欠款并取消交易(将支付的金额退还给客户,而不是运送商品)。

但是,我们仍然需要支付 PayPal 费用,因此这很容易被滥用使我们(卖家)赔钱。

有什么方法可以制作客户端的 PayPal 智能结账按钮,同时还能保护自己免受此类攻击?

【问题讨论】:

    标签: javascript paypal


    【解决方案1】:

    有什么方法可以制作客户端的 PayPal 智能结账按钮,同时还能保护自己免受此类攻击?

    这就是为什么必须进行服务器端验证的原因。在客户端利用这类东西非常容易,而且您也无法在客户端保护它。 PayPal 有关于验证付款的服务器端实现的文档。他们也有许多 SDK 来满足您的需求。例如NodeJS、PHP、Python...

    PayPal Checkout Server-Side SDK

    【讨论】:

    • 我认为我可能完全不应该使用 Express Checkout 按钮。我已经意识到,即使公开客户端 API 密钥,也会让用户进行欺诈性付款,这可能会导致与问题中描述的问题相同的问题。实施后端验证后,仍然存在几个安全漏洞,仅使用按钮的客户端 API 密钥即可轻松利用。
    • 我相信快速结帐按钮可以通过服务器端实现安全。是的,客户端 API 密钥是可见的,但这很好,因为您的密钥只能在服务器端访问。如果您的密钥被泄露(服务器被黑?),那么是的,这是一个问题。但是,您可以肯定地使用带有 Express Checkout 按钮的服务器端方法安全地创建企业级实现。
    • 我看到的问题是,使用客户端 API 密钥,您可以只使用客户端 Javascript 创建订单。比如说,可以创建订单,然后进行退款。 PayPal 如何知道这些订单是欺诈性创建​​的?在他们看来,这是合法的命令。我还不完全了解 PayPal 是如何为商家工作的,所以我不知道这种情况是否可以像我想的那样容易被滥用。
    猜你喜欢
    • 2014-03-03
    • 2021-02-04
    • 2020-01-16
    • 2022-09-23
    • 2020-06-02
    • 1970-01-01
    • 2021-09-07
    • 2010-09-25
    • 2021-03-29
    相关资源
    最近更新 更多