Javascript Firebase脚本代码显示在控制台中

Javascript Firebase脚本代码显示在控制台中,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,总的来说,我对Firebase很陌生,我有一些问题,我不确定它们是否是问题 首先,我设置了API密钥等 <script> firebase.initializeApp({ apiKey: '#####', authDomain: '#####', projectId: '####' }); // Initialize Cloud Firestore through Firebase var db = firebase.

总的来说,我对Firebase很陌生,我有一些问题,我不确定它们是否是问题

首先,我设置了API密钥等

<script>
  firebase.initializeApp({
      apiKey: '#####',
      authDomain: '#####',
      projectId: '####'
    });

    // Initialize Cloud Firestore through Firebase
    var db = firebase.firestore();
</script>

firebase.initializeApp({
apiKey:“######”,
authDomain:“#####”,
项目D:“#####”
});
//通过Firebase初始化云Firestore
var db=firebase.firestore();
然后我去用谷歌给出的例子

<script>
    var docRef = db.collection("MyTable").doc("person1");

    docRef.get().then(function(doc) {
        if (doc.exists) {
            console.log("Document data:", doc.data());
        } else {
            // doc.data() will be undefined in this case
            console.log("No such document!");
        }
    }).catch(function(error) {
        console.log("Error getting document:", error);
    });
</script>

var docRef=db.collection(“MyTable”).doc(“person1”);
docRef.get().then(函数(doc){
如果(文件存在){
log(“文档数据:”,doc.data());
}否则{
//在这种情况下,将不定义doc.data()
log(“没有这样的文档!”);
}
}).catch(函数(错误){
log(“获取文档时出错:”,错误);
});
我得到了我需要的东西。我的主要问题是这不安全吗

我打开了开发人员控制台,检查了脚本,看看发生了什么,我看到它显示了一切,我的数据库名称,我正在访问的集合等等

是什么让一个随机的人只是复制我的代码并在他们这边运行?有没有办法解决这个问题?它是要这样工作的吗


正如我所说,我是新手,所以我可能在这里遗漏了一些东西。

您无法将数据库的域列入白名单。请记住,作为一个公共云托管数据库,public实际上意味着public。也就是说,你可以做一些事情

  • 使用firebase云函数处理任何您想不让客户端使用的内容
  • 在您的web客户端中使用/_u/firebase/init.js,它将配置和初始化您的firebase实例,而无需将其显式加载到页面上-请记住,用户仍然可以通过以下js链接获取信息
  • 如果您的用户已通过身份验证,则可以使用数据库规则确保他们仅登录用户可以看到数据{“规则”:{.read”:“auth!==null”},或者登录用户可以看到他们自己的数据。查看此处了解更多信息
  • 如果您设置规则要求用户登录,则可以使用google auth将您的域列入白名单。这将确保只有您的用户可以查看您的数据,并且只能通过您的客户端查看数据。有关使用应用的规则编写查询的更多信息,请参阅本页

您无法将数据库的域列入白名单。请记住,作为一个公共云托管数据库,public实际上意味着public。也就是说,你可以做一些事情

  • 使用firebase云函数处理任何您想不让客户端使用的内容
  • 在您的web客户端中使用/_u/firebase/init.js,它将配置和初始化您的firebase实例,而无需将其显式加载到页面上-请记住,用户仍然可以通过以下js链接获取信息
  • 如果您的用户已通过身份验证,则可以使用数据库规则确保他们仅登录用户可以看到数据{“规则”:{.read”:“auth!==null”},或者登录用户可以看到他们自己的数据。查看此处了解更多信息
  • 如果您设置规则要求用户登录,则可以使用google auth将您的域列入白名单。这将确保只有您的用户可以查看您的数据,并且只能通过您的客户端查看数据。有关使用应用的规则编写查询的更多信息,请参阅本页
这是你的应用程序在谷歌服务器上查找Firebase数据所需的“公正”配置数据。在不知道后端服务的配置数据(至少是服务的URL)的情况下,无法与后端服务交谈。由于无法阻止公开此信息,因此可以通过其他方式确保访问安全。对于Firebase,这通常是通过要求用户登录,然后使用服务器端安全规则来授权其数据访问来完成的。请看,这是您的应用程序需要的“只是”配置数据,以便能够在谷歌服务器上找到其Firebase数据。在不知道后端服务的配置数据(至少是服务的URL)的情况下,无法与后端服务交谈。由于无法阻止公开此信息,因此可以通过其他方式确保访问安全。对于Firebase,这通常是通过要求用户登录,然后使用服务器端安全规则来授权其数据访问来完成的。看见