可以在前端更改Firebase可调用函数数据吗?

时间:2019-04-08 17:08:35

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

我正在使用Stripe和Firebase功能进行付款。我当前在应用程序中购买商品的情况如下。

  • 加载项目,这是具有ID和价格的Firestore文档
  • 用户单击“立即购买,价格为 ”,输入信用卡信息并确认身份
  • 我得到一个带有ID的条带来源,据我所知,其中包含有关信用卡的信息
  • 我调用我的firestore可调用函数,并传递stripeSourceIditemIDitem.price
  • 在我的函数中,我检查用户(从上下文中)是否已通过身份验证,然后向用户收费,并将所购买的商品保存在用户数据中,以供日后显示商品

我的关注点是第4点。用户是否可能以某种方式入侵我的前端代码,以便在Stripe返回sourceId之后,黑客会以不同的价格或different itemId以另一个价格获得不同的商品?如果是这种情况,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您从客户端传递到服务器的任何内容都可能被恶意用户更改。这就是为什么您永远不要信任直接来自服务器的任何数据。

解决方案是仅传递来自客户端的itemID,并让服务器根据该价格查询价格。如果恶意用户传递了不同的商品ID,那么他们将只是在购买其他商品,但价格仍然是您设定的价格。

我强烈建议观看Firebase Summit 2018上的Five tips to secure your app,以获取有关保护应用程序安全的更多提示。