如何保护 Angular2 cli 应用程序对 Firebase 的访问
How to secure Angular2 cli app's access to Firebase
我正在使用 Angular2 CLI 和 Firebase。该应用托管在 Firebase 上,并使用 Firebase Realtime DB 来存储数据。我的 firebase 配置如下 -
export const firebaseConfig = {
apiKey: "[XYZ]",
authDomain: "[ABC].firebaseapp.com",
databaseURL: "https://[ABC].firebaseio.com",
storageBucket: "",
messagingSenderId: "[123]"
};
由于上面的配置是明文的并且在 Angular2 包中,所以它对所有人都是可见的。该应用程序的用户不使用 Firebase 进行身份验证,但他们生成和保存的数据需要是安全的,因此只有应用程序的 apiKey 等的任何人都无法获取数据。我将如何确保只有我的应用程序中的用户才能 read/write 数据?
我已经阅读了有关 Firebase 身份验证、安全性和规则的文档 - 但仍然不确定如何在没有应用程序级别或用户级别身份验证的情况下保护对数据库的访问。
编辑 - 根据 Michael 的回复,这是我的(我认为不寻常的)场景:
- 我的应用程序在 public URL 上,因此对所有人开放。
- 该应用程序的用户使用 OAuth 与许多第三方之一进行登录。所有这些 return 一个唯一的令牌来识别用户。
- 我无法控制这些令牌的生成方式。
- 我可以将这些令牌传递给 Firebase 以唯一标识用户,但数据不限于特定用户。换句话说,许多用户可以访问相同的数据。
- 如何确保某些黑客不会窃取我应用的 Firebase 访问配置和启动 reading/writing 数据?
传递给 firebase.initializeApp()
的所有配置都被认为是可公开披露的。您不得依赖混淆来保护对实时数据库的访问。如果您想限制访问但您没有使用 Firebase Auth 的内置提供程序之一,您应该 generate a custom token 来识别您的用户。
安全规则和 Firebase 身份验证是 唯一 直接从客户端安全访问数据的方法。
我正在使用 Angular2 CLI 和 Firebase。该应用托管在 Firebase 上,并使用 Firebase Realtime DB 来存储数据。我的 firebase 配置如下 -
export const firebaseConfig = {
apiKey: "[XYZ]",
authDomain: "[ABC].firebaseapp.com",
databaseURL: "https://[ABC].firebaseio.com",
storageBucket: "",
messagingSenderId: "[123]"
};
由于上面的配置是明文的并且在 Angular2 包中,所以它对所有人都是可见的。该应用程序的用户不使用 Firebase 进行身份验证,但他们生成和保存的数据需要是安全的,因此只有应用程序的 apiKey 等的任何人都无法获取数据。我将如何确保只有我的应用程序中的用户才能 read/write 数据?
我已经阅读了有关 Firebase 身份验证、安全性和规则的文档 - 但仍然不确定如何在没有应用程序级别或用户级别身份验证的情况下保护对数据库的访问。
编辑 - 根据 Michael 的回复,这是我的(我认为不寻常的)场景:
- 我的应用程序在 public URL 上,因此对所有人开放。
- 该应用程序的用户使用 OAuth 与许多第三方之一进行登录。所有这些 return 一个唯一的令牌来识别用户。
- 我无法控制这些令牌的生成方式。
- 我可以将这些令牌传递给 Firebase 以唯一标识用户,但数据不限于特定用户。换句话说,许多用户可以访问相同的数据。
- 如何确保某些黑客不会窃取我应用的 Firebase 访问配置和启动 reading/writing 数据?
传递给 firebase.initializeApp()
的所有配置都被认为是可公开披露的。您不得依赖混淆来保护对实时数据库的访问。如果您想限制访问但您没有使用 Firebase Auth 的内置提供程序之一,您应该 generate a custom token 来识别您的用户。
安全规则和 Firebase 身份验证是 唯一 直接从客户端安全访问数据的方法。