firebase 自定义声明和检查Pro会员资格

iqih9akk  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(71)

关于Firebase Auth上下文中的自定义声明。
下面的代码块来自Firebase浏览器:

firebase.auth().currentUser.getIdTokenResult()
  .then((idTokenResult) => {
     // Confirm the user is an Admin.
     if (!!idTokenResult.claims.admin) {
       // Show admin UI.
       showAdminUI();
     } else {
       // Show regular user UI.
       showRegularUI();
     }
  })
  .catch((error) => {
    console.log(error);
  });

字符串
如果云函数用于根据用户是否支付了会员资格来更改自定义声明,例如将“pro_membership”的自定义声明更改为true;在客户端的生产应用中以上述方式检查是否安全?
我的主要问题是:有没有一种方法可以让用户在客户端欺骗这个值,并在他们没有订阅的时候将这个值更改为true?

1cklez4t

1cklez4t1#

这是客户端代码。所以,是的,它总是可以调节的。最后,一个简单的需要翻转你的if(...) else{...}树的否定。
react bundle中的所有内容都将在一个不可信的环境中执行。客户端环境。你对那里发生的事情没有任何控制权。客户端可以通过devtools控制台执行任何事情,或者有一些浏览器扩展来做类似的事情。
例如,每个广告拦截器扩展都在这样做。它只是删除用于显示/执行广告的调用/DOM节点或JavaScript块。
如果你不是行业中的大玩家,人们会创建变通方法来访问你的高级应用程序吗?不太可能。它是默默无闻的安全吗?是的。
如果你真的想要这样一个功能,你需要在一个后端后面把它关上,如果客户端真的是付费会员,它只会把高级UI JS和CSS包发送给客户端。也就是说,在一个后端控制器中做同样的管理员声明检查,你现在在前端做,然后决定是否发送它。

相关问题