Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Firebase云功能和Stripe,以何种正确/安全的方式处理Flatter中的付款?_Firebase_Security_Google Cloud Functions_Stripe Payments - Fatal编程技术网

使用Firebase云功能和Stripe,以何种正确/安全的方式处理Flatter中的付款?

使用Firebase云功能和Stripe,以何种正确/安全的方式处理Flatter中的付款?,firebase,security,google-cloud-functions,stripe-payments,Firebase,Security,Google Cloud Functions,Stripe Payments,我正在尝试建立一个电子商务应用程序,卖家可以在我的平台上发布他们的商品并卖给买家。该移动应用程序是用flifter构建的,我使用Firebase Firestore和Storage来处理数据,Stripe是我的支付处理选择 我在Medium()上遇到了这本指南,它在让我涉足在线支付处理方面做了大量工作 然而,他在书中提到的一件事似乎不是处理付款的安全方法 他在指南中所做的是,在客户端应用程序中,他发出了https POST请求 final http.Response response =

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

我在Medium()上遇到了这本指南,它在让我涉足在线支付处理方面做了大量工作

然而,他在书中提到的一件事似乎不是处理付款的安全方法

他在指南中所做的是,在客户端应用程序中,他发出了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
              }
          )
      }
   }
);
必须从客户端传递总金额似乎不是一个好的安全实践?我可以想象,也许有人有足够的知识,可以逆向工程的应用程序和编辑的金额变量

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

我已经看过并阅读了谷歌firebase团队的视频和帖子中的所有官方指南,但说到数量,它只是:

const amount = snap.data().amount;
我曾考虑过使用云函数以某种方式将所有商品的价格和数量相加/汇总,以生成数量。然而,这真的是解决此问题的最有效方法吗?如果有N个卖家从买家那里订购了M件商品,这会不会导致云函数进行大量不必要的计算


我不熟悉移动和在线支付,因此首先感谢您的耐心。

您销售的任何东西的数量都应该在您的服务器上设置,最好从数据库中获取

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

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

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


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

您销售的任何东西的数量都应该在您的服务器上设置,最好是从数据库中获取

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

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

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


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

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