【问题标题】:Does Stripe Payment Intent Id need to be kept secret?Stripe Payment Intent Id 需要保密吗?
【发布时间】:2020-10-05 09:57:27
【问题描述】:

我在我的应用中使用 Stripe 进行付款。有两个 ID:payment_method_idpayment_intent_id。我注意到,当我尝试对不同的 Stripe 客户使用 payment_method 时,它不允许我这样做,所以我的猜测是它不是那个秘密。 payment_intent_ids 是秘密的吗?如果我将每笔交易的 payment_intent_id 都存储在数据库中,那是不是很糟糕?

【问题讨论】:

    标签: java stripe-payments


    【解决方案1】:

    PaymentIntent id (pi_123456) 实际上只是一个标识符,不必保密。除非他们拥有您的 Secret API 密钥或 PaymentIntentclient_secret,否则没有人可以对 id 进行任何操作。

    PaymentIntent id 存储在您的数据库中作为对API 中对象的引用绝对是一种常见的做法。这类似于您在数据库中存储Customer id (cus_123) 或其PaymentMethods id (pm_123) 的方式。

    【讨论】:

    • 如果攻击者控制了我的客户 ID 和付款方式 ID 组合,他们不能触发该客户的付款吗?我还想了解客户最初是否在我们这里保存了一张卡片,黑客需要哪些信息才能代表其他人触发 pamynet?
    • 要触发付款,他们需要您提供 API 密钥,该密钥应该安全地存储在您的服务器上。至于为以前保存的卡充电,您实际上并不需要任何东西。但同样,您需要您的 Secret API 密钥首先为该特定客户 ID 显式配置 PaymentIntent,这是在服务器端完成的。
    • 是的,假设他们向我们的后端发起了一个请求,他们在其中输入了另一个人的客户 ID 和付款方式 ID……然后他们就可以收费了,对吧?我认为这里的重点是,如果 api 已通过身份验证,并且您只能保证触发呼叫的人可以使用他们自己的条带客户/付款方式 ID,那么您是安全的.. 但否则,如果您的 api 未通过身份验证,则拥有条带客户id 和 paymentmethod id 公开可能是危险的。但我同意你的看法,不是直截了当
    • 没错,您应该知道服务器端正确的客户 ID,而不是从客户端信任它。通常,您的客户在您的应用程序/网站中有一个帐户,您可以根据会话或 cookie 了解他们的真实客户 ID,例如
    猜你喜欢
    • 2022-12-01
    • 1970-01-01
    • 2021-01-20
    • 2021-06-12
    • 2021-05-11
    • 2020-09-07
    • 2020-02-19
    • 2020-02-13
    • 2021-11-13
    相关资源
    最近更新 更多