【问题标题】:What is the proper/secure way to process payments in Flutter with Firebase Cloud Functions and Stripe?使用 Firebase Cloud Functions 和 Stripe 在 Flutter 中处理付款的正确/安全方法是什么?
【发布时间】:2020-12-12 11:16:40
【问题描述】:

我正在尝试构建一个电子商务应用程序,卖家可以在其中发布他们的商品并将其出售给我平台上的买家。移动应用是使用 Flutter 构建的,我使用 Firebase Firestore 和 Storage 来处理数据,并选择 Stripe 作为我的支付处理选择。

我在 Medium (https://medium.com/flutter-community/build-a-marketplace-in-your-flutter-app-and-accept-payments-using-stripe-and-firebase-72f3f7228625) 上看到了这个指南,它在让我涉足在线支付处理方面做得很好。

但是,他在其中提到的一件事可能看起来不是一种安全的付款方式?

他在指南中所做的是在客户端应用程序中他发出了一个 https POST 请求

    final http.Response response = await http.post(‘$urlamount=$amount&currency=GBP&paym=${paymentMethod.id}’);

然后在他使用的云函数中:

exports.StripePI = functions.https.onRequest(async (req, res) => {
const stripeVendorAccount = 'acct_someAccountIdHere';
stripe.paymentMethods.create(
   {
     payment_method: req.query.paym,
   }, {
     stripeAccount: stripeVendorAccount
   },
   function(err, clonedPaymentMethod){
      if(err != null) {
          console.log(err);
      } else {
          stripe.paymentIntents.create(
              {
                  **amount = req.query.amount**, // Security concern??
                  currency = req.query.currency,
                  ...etc
              }
          )
      }
   }
);

必须从客户端传递总金额似乎不是一个好的安全做法?我可以想象也许有足够知识的人可以对应用程序进行逆向工程并编辑该数量变量?

那么设置金额的正确方法是什么?

我已经看过并阅读了来自 Google 的 firebase 团队的视频和帖子的所有官方指南,然而,就数量而言,它只是:

const amount = snap.data().amount;

我曾考虑使用云函数以某种方式将所有商品的价格和数量相加/相加以生成金额,但是,这真的是解决此问题的最有效方法吗?如果有 N 多个卖家从买家那里订购了 M 件商品,会不会导致 Cloud Functions 进行大量不必要的计算?

我是移动和在线支付的新手,所以首先感谢您的耐心等待。

【问题讨论】:

  • 好吧,您仍然需要以某种方式从客户端获取这些数据。使用 SSL 或其他加密连接应该会更安全。

标签: firebase security google-cloud-functions stripe-payments


【解决方案1】:

应在服务器上设置您销售的任何物品的数量,最好从数据库中获取。

您应该发送数量,而不是从客户那里发送金额。

假设您以每件 10 美元的价格出售 T 恤,而用户想要购买 2 件。不要将 amount=20 发送到您的服务器,而是发送 quantity=2。然后在您的服务器上,您应该查看一件 T 恤的成本并将其乘以数量(在确保数量大于零之后)。

设置数量而不是数量意味着恶意用户可以对您的端点进行逆向工程并指示您的服务器,例如,他们希望以 0 美元的价格购买 100 件 T 恤。

我不会太担心不必要的计算,因为这一切都会深入到检索项目单位成本并将其乘以量化。

【讨论】:

    猜你喜欢
    • 2017-12-24
    • 2018-10-11
    • 2019-06-28
    • 2021-10-26
    • 2017-06-18
    • 2022-11-22
    • 1970-01-01
    • 2023-02-20
    • 1970-01-01
    相关资源
    最近更新 更多