Stripe - 在服务器上安全地处理付款

问题描述 投票:0回答:1

我在前端 (React) 中使用 Stripe Elements 来获取付款信息和所有内容。目前,我在前端有一个直接运行

handleSubmit
的函数
await stripe.confirmPayment({ elements, ... })
,其中
const elements = useElements();
const stripe = useStripe();
。后端服务器 (Express) 处理可发布密钥并创建支付意图,并在创建意图时发回 pk 和客户端密钥。 但是,我想将所有支付逻辑移至服务器,以避免任何潜在的客户端数据伪造。

首先,这是个好主意吗?首先在前端确认付款是个坏主意

第二,我如何将用户的支付数据发送到服务器?通过发布请求来完成此操作是否安全,Stripe 是否提供了一种方法来完成此操作(例如,我可以将客户端密钥发送回服务器以处理付款意图)吗?

如果这是一个愚蠢的问题,我深表歉意。我想这是我第一次处理付款并严重担心安全问题。

security https stripe-payments payment-processing pci-dss
1个回答
0
投票

首先,这是一个好主意吗?

我不这么认为。

首先,如果您的 Stripe 帐户无论如何都是新的,它根本不会让您这样做 - 请参阅此 thread 作为示例。

此外,这样做将要求您符合 PCI 合规性,并使用 SAQ 表格向 Stripe 和 PCI 当局证明这一点:
https://stripe.com/docs/security/guide

使用前端 Stripe iframe(Elements)收集卡片详细信息(或 Stripe Checkout 等其他解决方案)是最省心的选择。

confirmPayment
/
confirmXxxPayment
功能也很方便,因为它们可以收集付款详细信息,在必要时进行身份验证,然后一次性尝试收费。
在服务器端实现这些操作中的每一个都需要更多的工作。

也就是说,您希望尽可能将集成与前端分离是正确的 - 这可能是您的应用程序中最脆弱的点。

因此,您应该执行以下操作:
- 不要将订单总额的数字金额从客户端传递到服务器 -> 使用项目 dics 代替。
- 不要依赖前端重定向和 url 参数来启动成功订单的流程 -> 使用 webhooks 通知自己。
- 确保验证这些 webhooks 的来源,并为它们实现幂等性逻辑(不仅针对重放攻击,Stripe webhooks 可以多次发送)。

© www.soinside.com 2019 - 2024. All rights reserved.