如何保护Angular2 cli应用程序';s进入消防基地

如何保护Angular2 cli应用程序';s进入消防基地,angular,firebase,firebase-realtime-database,firebase-security,Angular,Firebase,Firebase Realtime Database,Firebase Security,我正在将Angular2 CLI与Firebase一起使用。该应用程序托管在Firebase上,使用Firebase实时数据库存储数据。我的firebase配置如下所示- export const firebaseConfig = { apiKey: "[XYZ]", authDomain: "[ABC].firebaseapp.com", databaseURL: "https://[ABC].firebaseio.com", storageBucket: "", mess

我正在将Angular2 CLI与Firebase一起使用。该应用程序托管在Firebase上,使用Firebase实时数据库存储数据。我的firebase配置如下所示-

export const firebaseConfig = {
  apiKey: "[XYZ]",
  authDomain: "[ABC].firebaseapp.com",
  databaseURL: "https://[ABC].firebaseio.com",
  storageBucket: "",
  messagingSenderId: "[123]"
};
因为上面的配置是明文的,并且在Angular2包中,所以它对所有人都是可见的。该应用程序的用户不通过Firebase的身份验证,但他们生成和保存的数据需要安全,因此只有该应用程序的apiKey等才能访问数据。我如何确保只有我的应用程序中的用户才能读/写数据

我已经阅读了有关Firebase身份验证、安全性和规则的文档,但仍然不确定如何在没有应用程序级或用户级身份验证的情况下保护对数据库的访问

编辑-继Michael的回答之后,下面是我(我认为这是一个非常常见的)场景:

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

  • 传递给firebase.initializeApp()的所有配置都被认为是可公开披露的。不能依靠模糊处理来确保对实时数据库的访问。如果要限制访问,但未使用Firebase Auth的内置提供程序之一,则应识别用户


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

    谢谢Michael。除了您的回答,我还添加了编辑2以了解更多详细信息。希望它有意义。你是如何得到OAuth代币的?通过你运行的服务器?另一个第三方服务?如果要保护数据,您需要某种方法将这些OAuth令牌转换为有效的Firebase自定义令牌。谢谢Michael。目前,该应用程序仅在客户端使用Oauth通过第三方服务对用户进行身份验证。因此,访问权只存在于客户端。似乎我必须向堆栈中添加一个服务器来处理Oauth,并使用访问令牌来创建firebase自定义令牌。这会产生一个问题,因为应用程序也由firebase托管,而firebase不允许节点服务器托管。我猜Firebase+AngularCli主机似乎不支持自定义令牌。我必须和他们开一张罚单来解决这个问题。你应该看看哪个允许你在服务器端运行Node.js代码。特别是,这可能会有帮助。人们可以自由解释他们的投票,也可以不解释他们的投票,因为他们希望。我们说,人们可以出于任何原因匿名投票,只要他们不关注单个用户。