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

标签 javascript firebase firebase-realtime-database

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

首先,我设置了 API key 等

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

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

然后我就去使用了谷歌给出的例子

<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>

它成功了,我得到了我需要的东西。购买我的主要问题是这不安全吗?

我打开了开发者控制台,检查了脚本以查看发生了什么,我看到它显示了所有内容,我的数据库名称,我正在访问的集合等等。

是什么让随机的人复制我的代码并在他们这边运行它?有解决办法吗?它应该像这样工作吗?

正如我所说,我对此很陌生,所以也许我在这里遗漏了一些东西。

最佳答案

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

  • 使用 Firebase 云函数来处理您不想让客户端知道的任何事情。
  • 在您的网络客户端中使用/__/firebase/init.js ,这将配置和初始化您的 Firebase 实例,而无需将其显式加载到页面上 - 请记住,用户仍然可以通过点击 JS 链接来获取信息。<
  • 如果您的用户经过身份验证,则可以使用数据库规则来确保他们只有登录用户才能看到数据 { "rules": { ".read": "auth !== null"} } ,或者登录用户可以看到自己的数据。查看此处了解更多信息 https://firebase.google.com/docs/firestore/security/get-started#writing_rules
  • 如果您设置规则要求用户登录,则可以使用 google auth 将您的域列入白名单。这将确保只有您的用户才能查看您的数据,并且只能通过您的客户端查看您的数据。有关编写应用规则的查询的详细信息,请参阅此页 https://firebase.google.com/docs/firestore/security/rules-query

关于javascript - Firebase 脚本代码显示在控制台中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51347081/

相关文章:

javascript - 如何在 Javascript 中获取嵌套数组的长度?

java - DataSnapshot for 循环 (Android Studio) 未附加 Firebase 数据库路径的子项

java - 如何从 Firebase 获取特定键的特定子值

java - 如何从监听器获取数据?

javascript - 我们如何更改蜘蛛图背景颜色?

javascript - 重新格式化对象

javascript - 如何在 javascript 中创建包含小时和分钟的数组?

javascript - 如何在 Cloud Function 中重试 Cloud Firestore 事务直到状态 == true

ios - 无法在 Swift 应用程序中导入 Firebase sdk

java - 如何从 firebase 数据库中获取基于时间戳的排序数据