gpt4 book ai didi

javascript - 为什么我的 Firebase 项目无需指定 apiKey 即可运行?

转载 作者:行者123 更新时间:2023-12-02 23:20:11 26 4
gpt4 key购买 nike

我已经设置了一个使用 Firestore 数据库的 Firebase 项目。我得到了以下代码片段,可以在我的 Javascript 代码中使用它:

    // Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
authDomain: "xxxxxxxxxx.firebaseapp.com",
databaseURL: "https://xxxxxxxxxxxxx.firebaseio.com",
projectId: "xxxxxxxx",
storageBucket: "xxxxxxxxx.appspot.com",
messagingSenderId: "xxxxxxxxx",
appId: "1:xxxxxxxxxxxxxxxxxxxxxxxxxxx"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);

到那时一切都在进行。然后,我需要通过在 Firebase 项目以及 Google Cloud Platform 项目的“凭据”菜单中的 apiKey 上设置授权域,确保只有我的域可以使用该应用。

到目前为止,我的项目仍然有效,但我注意到它在任何域中仍然有效。所以限制并没有发挥作用。实际上,通过更多测试,我发现 apiKey 对于我的项目工作来说甚至不是必需的,我可以将片段减少到以下内容,并且事情仍然有效:

    // Your web app's Firebase configuration
var firebaseConfig = {
projectId: "xxxxxxxx",
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);

所以我想知道:我的项目如何在仅给出projectId的情况下在Firestore数据库中运行和写入?代码片段中给了我很多不必要的信息。

有谁知道为什么会发生在我身上?我尝试创建一个新项目,再次遵循不同的教程,得到相同的结果。实际上,我使用的教程之一具有相同的行为,因为我可以使用本教程的项目(它实际上是在线的),只需指定projectId,我就可以通过从本地服务器发送垃圾邮件来耗尽它的 Firestoere 配额。

我找不到与我类似的案例的任何信息。请帮忙。

PS:这是我的 Firestore 数据库规则(如果重要的话):

    service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}

最佳答案

每个 Firebase 项目实际上都是一个 Google Cloud 项目,每个云项目都有一个唯一的 ID。由于每个项目只能有一个 Firestore 实例,因此仅使用项目 ID 来定位它就足够了。

配置文件中的其他值用于其他 Firebase 产品。如果您不使用这些产品,那么您就不需要它们。如果适合您,请随意将它们排除在外。请记住,如果您不使用完整的配置,将来可能会遇到问题。

如果您担心 Firestore 实例的安全性,则应使用安全规则来限制谁可以读取和写入哪些数据。无法根据您的网络应用程序的域或用户的位置来限制对其的访问。您现在拥有的规则允许任何具有互联网连接的人创建、修改和删除您的 Firestore 实例中的任何文档。您可能想改变这一点。

关于javascript - 为什么我的 Firebase 项目无需指定 apiKey 即可运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56984909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com