我正在使用firbase的angular2 cli。该应用程序托管在Firebase上,并使用Firebase实时数据库存储数据。我的firebase配置如下 -
export const firebaseConfig = {
apiKey: "[XYZ]",
authDomain: "[ABC].firebaseapp.com",
databaseURL: "https://[ABC].firebaseio.com",
storageBucket: "",
messagingSenderId: "[123]"
};
由于上面的配置是在清晰的文本中,并且在Angular2捆绑包中,因此所有人都可以看到。该应用程序的用户不能使用firebase进行身份验证,但是它们生成和保存的数据需要安全,因此不仅可以使用该应用程序的Apikey等人,等等。我将如何确保只有应用程序中的用户才能读取/写数据?
我已经阅读了用于Firebase身份验证,安全性和规则的文档 - 仍然不确定如何在没有应用程序级别或用户级别身份验证的情况下确保对数据库的访问。
编辑 - 进一步迈克尔的回应,这是我的(我认为是一个不寻常的)方案:
- 我的应用程序在公共网站上,因此向所有人开放。
- 该应用程序的用户使用OAuth登录到许多第三方之一。所有这些都返回独特的令牌以识别用户。
- 我无法控制这些令牌是如何生成的。
- 我可以将这些令牌传递给Firebase以唯一识别用户,但是数据不仅限于特定用户。换句话说,许多用户可以访问相同的数据。
- 如何确保某些黑客不会窃取我的应用程序的firebase访问配置并开始读取/写作数据?
传递给firebase.initializeApp()
的所有配置都被视为可公开披露。您不得依靠混淆来确保对实时数据库的访问。如果您想限制访问权限,但您不使用Firebase Auth的内置提供商之一,则应生成自定义令牌以识别您的用户。
安全规则和火库验证是唯一的直接从客户端安全访问数据的方法。