这是告诉 Firebase配置一个可以使用 Javascript SDK 从实时数据库读取数据的 Web 应用程序的代码:
// Set the configuration for your app
// TODO: Replace with your project's config object
var config = {
apiKey: "apiKey",
authDomain: "projectId.firebaseapp.com",
databaseURL: "https://databaseName.firebaseio.com",
storageBucket: "bucket.appspot.com"
};
firebase.initializeApp(config);
// Get a reference to the database service
var database = firebase.database();
我想在具有共享主机的网站上进行firebase实施。我已经用我的数据测试了代码并且它可以工作。
但正如您所见,项目APIKEY
和数据库 URL 将暴露在客户端上。
- 这很危险吗?可能存在哪些危险?
- 有什么办法可以避免吗?(我必须使用 Javascript SDK,我不知道如何使用 Node 等,我想在 Wordpress 中已经存在的普通网页上显示数据。我可以用 PHP 做到这一点,但我没有在 Firebase 上找不到任何关于 PHP 的信息。)
它可能存在的危险是,如果您的 API 可见,任何人都可以复制它并使用它来发出请求并达到您的限制(这意味着请求将停止工作或您将被收费,具体取决于服务类型你正在使用)。有)。
如果是私人项目,您可以(应该)在合同中包含所有代码(包括 API 密钥)属于您并且不能被客户端使用。虽然当它是一个对 Internet 开放的应用程序时,这并不是那么简单。
为了防止这种密钥被盗,许多 API(例如 Google 或 Facebook 的 API)允许您限制对一系列域的访问。因此,如果您尝试访问指定主机之外的 API,请求将被拒绝。
在 Google(您指出的 Firebase 的情况)中,您可以限制 HTTP 引荐来源网址,以便只允许来自某些域的请求。创建受限 API 的步骤如下:
现在只有列表中指定的域才能访问您的 API 密钥。
在开发和测试应用程序时,您可以将文本框留空以不受限制,但在将应用程序投入生产之前添加域列表非常重要。