如何保护Angular2 cli应用访问Firebase

时间:2017-03-14 18:58:32

标签: angular firebase firebase-realtime-database firebase-security

我正在使用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等人才能获取数据。我如何确保我的应用程序中的用户只能读/写数据?

我已阅读Firebase身份验证,安全性和规则的文档 - 并且仍然不确定如何在没有应用级别或用户级别身份验证的情况下保护对数据库的访问。

编辑 - 继迈克尔的回复之后,我的(我认为这是一个非常见的)场景:

  1. 公共网址上的我的应用程序因此对所有人开放。
  2. 该应用的用户使用OAuth与许多第三方之一进行登录。所有这些都返回一个唯一的令牌来识别用户。
  3. 我无法控制这些代币的生成方式。
  4. 我可以将这些令牌传递给Firebase以唯一标识用户,但数据不限于特定用户。换句话说,许多用户可以访问相同的数据。
  5. 如何确保某些黑客不会窃取我应用的Firebase访问配置并开始读/写数据?

1 个答案:

答案 0 :(得分:2)

传递给firebase.initializeApp()的所有配置都被视为可公开披露。您不得依赖模糊处理来保护对实时数据库的访问。如果您要限制访问但未使用其中一个内置的Firebase Auth提供程序,则应generate a custom token识别您的用户。

安全规则和Firebase身份验证是直接从客户端安全访问数据的唯一方式。