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:
添加这些
- 转到项目的 'Credentials' 页面
- 找到您的 API 密钥并 select 它
- Select 'HTTP referrers (websites)'
- 添加您的每个域
注意这个!确保涵盖您 运行 所在的所有域,否则您将阻止访问(例如,如果您的网站有 .com 和 .es 版本,请确保这两个域都已列入白名单)。
不要启用 API。如果您不需要在 Firebase 项目中启用 URL 缩短器,您可以从 Google Developer Console 中禁用它。大多数 API 开始时被禁用,而且有几种类型的 API 无法使用 API 密钥调用(它们需要一个更安全的服务帐户)。
据我所知,公开 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:
添加这些- 转到项目的 'Credentials' 页面
- 找到您的 API 密钥并 select 它
- Select 'HTTP referrers (websites)'
- 添加您的每个域
注意这个!确保涵盖您 运行 所在的所有域,否则您将阻止访问(例如,如果您的网站有 .com 和 .es 版本,请确保这两个域都已列入白名单)。
不要启用 API。如果您不需要在 Firebase 项目中启用 URL 缩短器,您可以从 Google Developer Console 中禁用它。大多数 API 开始时被禁用,而且有几种类型的 API 无法使用 API 密钥调用(它们需要一个更安全的服务帐户)。