通过Android Studio使用机密规则访问Firebase

时间:2018-11-16 02:22:09

标签: android firebase firebase-realtime-database

我有一个配置为秘密数据库的firebase(读== false和写== false)。当我使用ESP8266并由appinventor创建应用程序时,它只需要Firebase URL和Secrets密钥(我通过数据库密钥获得)即可读取和写入数据。但是当我自己通过android studio创建应用程序时,我必须更改规则(读取== true和写入== true)以访问数据。您能帮我使用Android Studio的规则(读取== false和写入== false)访问firebase吗?

1 个答案:

答案 0 :(得分:0)

Android版Firebase SDK无法使用经典数据库密码初始化客户端。这是因为该方法将使Android应用程序具有对整个Firebase项目的管理访问权限,从而允许该应用程序的用户执行他们想要的任何操作。这是一种反模式,因为绝大多数Android应用程序的构建都是为了分发给应通过安全规则控制其访问权限的应用程序用户。

因此,常见的解决方案是在您的应用程序中使用Firebase身份验证,然后编写安全规则以控制所​​标识的用户可以访问的数据。即使您仅使用匿名身份验证(不需要用户登录),与不进行身份验证相比,通过这些规则保护应用程序的安全性也要好得多。

有一个 Firebase管理SDK,它向用户授予对Firebase项目的管理访问权限(类似于密钥现在为您提供的功能)。但是该SDK无法在Android应用中使用,以防止被意外地向普通用户开放您的项目。而是可以使用Admin SDK在受信任的环境(例如开发计算机,您控制的服务器或Cloud Functions)上运行。

您可以做的是在这样的环境下使用Admin SDK,然后将受控的端点(即您自己的API)暴露给Android应用。一个简单的示例f将通过callable Cloud Functions。但是在那儿,您也必须确保安全地访问该自定义API,以免意外泄露过多的数据。