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

时间:2018-07-15 09:29:58

标签: javascript firebase firebase-realtime-database

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

首先,我设置API密钥等

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

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

然后我去使用了Google给出的示例

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

它奏效了,我得到了我需要的东西。买我的主要问题是这样不安全吗?

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

是什么让随机的人只复制我的代码并在他们身边运行它?是否可以解决此问题?

正如我所说的,我是新手,所以也许我在这里错过了一些东西。

1 个答案:

答案 0 :(得分:2)

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

  • 将Firebase云功能用于任何您想让客户端访问的功能。
  • 在您的Web客户端中使用/__/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