我正在开发Chrome扩展程序,并使用Cloud Firestore。如Google文档中所述,我必须将代码放入JavaScript文件本身,任何可以提取源代码的人都可以轻松看到。为了安全起见,我们只能允许通过某些域名或某些应用程序访问数据库。但是,对于Google Chrome扩展程序,既不能托管域名,也不能注册为应用程序。所以,我怎么不让任何人弄乱它呢?
我的第二个问题是,我在chrome扩展代码中有一些if语句,这些语句关联了Cloud Firestore的凭据并根据它显示结果。像这样-
if(userrefdoc.getCoins < 1){
console.log("Not enough coins. Buy some more");
}
因此,如果某人可以提取和修改我的代码,则他可以根据自己的需要轻松地更改if语句,并可以访问其功能,这些功能是他不允许使用的。那么,我也该如何处理这种情况?
答案 0 :(得分:1)
不可能将代码中的秘密隐藏在您交付给客户以在其浏览器或设备(与Android,iOS应用程序相同)中运行的JavaScript代码中。您应该假设坚定的黑客能够对所有附带的代码进行反向工程。
Firebase初始化参数不是“凭据”。它们只是用于标识您的项目的设置。它们中没有秘密。
在Firebase中保护数据的方法是与Firebase Authentication一起使用Firestore security rules。如果您不能使用Firebase Auth或安全规则来控制授权这样做的个人用户对数据库的访问,但是您需要公共客户端代码来进行读写,那么您应该假定拥有项目名称的任何人都可以能够读写它。
唯一的解决方法是您设置自己的后端,通过它路由所有访问,并执行自己的检查以查看客户端是否应该这样做。