如何保护Angular2 cli应用程序';s进入消防基地
我正在将Angular2 CLI与Firebase一起使用。该应用程序托管在Firebase上,使用Firebase实时数据库存储数据。我的firebase配置如下所示-如何保护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
export const firebaseConfig = {
apiKey: "[XYZ]",
authDomain: "[ABC].firebaseapp.com",
databaseURL: "https://[ABC].firebaseio.com",
storageBucket: "",
messagingSenderId: "[123]"
};
因为上面的配置是明文的,并且在Angular2包中,所以它对所有人都是可见的。该应用程序的用户不通过Firebase的身份验证,但他们生成和保存的数据需要安全,因此只有该应用程序的apiKey等才能访问数据。我如何确保只有我的应用程序中的用户才能读/写数据
我已经阅读了有关Firebase身份验证、安全性和规则的文档,但仍然不确定如何在没有应用程序级或用户级身份验证的情况下保护对数据库的访问
编辑-继Michael的回答之后,下面是我(我认为这是一个非常常见的)场景:
传递给firebase.initializeApp()的所有配置都被认为是可公开披露的。不能依靠模糊处理来确保对实时数据库的访问。如果要限制访问,但未使用Firebase Auth的内置提供程序之一,则应识别用户
安全规则和Firebase身份验证是直接从客户端安全访问数据的唯一方法。谢谢Michael。除了您的回答,我还添加了编辑2以了解更多详细信息。希望它有意义。你是如何得到OAuth代币的?通过你运行的服务器?另一个第三方服务?如果要保护数据,您需要某种方法将这些OAuth令牌转换为有效的Firebase自定义令牌。谢谢Michael。目前,该应用程序仅在客户端使用Oauth通过第三方服务对用户进行身份验证。因此,访问权只存在于客户端。似乎我必须向堆栈中添加一个服务器来处理Oauth,并使用访问令牌来创建firebase自定义令牌。这会产生一个问题,因为应用程序也由firebase托管,而firebase不允许节点服务器托管。我猜Firebase+AngularCli主机似乎不支持自定义令牌。我必须和他们开一张罚单来解决这个问题。你应该看看哪个允许你在服务器端运行Node.js代码。特别是,这可能会有帮助。人们可以自由解释他们的投票,也可以不解释他们的投票,因为他们希望。我们说,人们可以出于任何原因匿名投票,只要他们不关注单个用户。