firebase 和 google shorterer 具有相同的 API 键

firebase and google shortener with the same API key

据我所知,公开 API 密钥如果我按照它提到的那样向我的数据库添加验证规则,则不会存在安全风险

var config = {
  apiKey: '<your-api-key>', // this key
  authDomain: '<your-auth-domain>',
  databaseURL: '<your-database-url>',
  storageBucket: '<your-storage-bucket>'
};

我也明白我可以用 firebase API 密钥调用 google shorterer API,现在有风险,任何人都可以调用 google shorterer API 使用我的 firebase API 密钥,如何避免这种情况

API 键是跨 Google API 访问的通用标识符 - 它们不仅适用于 Firebase。当您不需要识别为特定用户(您将使用 OAuth 访问令牌)时,它们用于 API 访问。

API 键标识您的项目正在进行调用,例如传递项目 ID,但重要的是,可以重新生成 - 因此如果一个被坏人使用,您可以将其删除。

那么,您如何使用这些 API 密钥而不让自己暴露给向另一个 API 发送垃圾邮件的人呢?

添加域限制。基于浏览器的密钥可以限制为需要在某个域上。您可以从 Google Developer Console:

添加这些
  1. 转到项目的 'Credentials' 页面
  2. 找到您的 API 密钥并 select 它
  3. Select 'HTTP referrers (websites)'
  4. 添加您的每个域

注意这个!确保涵盖您 运行 所在的所有域,否则您将阻止访问(例如,如果您的网站有 .com 和 .es 版本,请确保这两个域都已列入白名单)。

不要启用 API。如果您不需要在 Firebase 项目中启用 URL 缩短器,您可以从 Google Developer Console 中禁用它。大多数 API 开始时被禁用,而且有几种类型的 API 无法使用 API 密钥调用(它们需要一个更安全的服务帐户)。