首页 > 解决方案 > 我可以阻止经过身份验证的用户查看我的整个 Firebase 数据库 JSON 文件吗?

问题描述

我创建了一个包含 5000 多名服务技术人员的 json 文件,我正在开发一个网站,有人可以在该网站上根据位置搜索特定服务。我是firebase的新手,所以假设我将以下JSON存储在firebase数据库中,这意味着任何经过身份验证的用户都可以通过输入firebase url.json来查看所有数据?如果整个数据都可以直接查看并在一分钟内复制整个数据,那将是不公平的。有解决办法吗?

    [
    {
        "name": "John",
        "Location": "Montreal",
        "title": "Electrician",
        "rating": "3",
        "phone": "5141234567"

    },
    {
        "name": "Paul",
        "Location": "Toronto",
        "title": "Plumber",
        "rating": "1",
        "phone": "5142234567"

    },
    {
        "name": “Rita”,
        "Location": "New Foundland”,
        "title": "Mechanic",
        "rating": "4",
        "phone": “5143234567”
    }
]

标签: jsonfirebasefirebase-realtime-database

解决方案


一旦您希望允许经过身份验证的用户使用客户端 SDK(Web、Android、iOS)在您的实时数据库中进行搜索,您确实需要让他们访问整个技术树(通过适当的安全规则)。

一种可能的解决方法是使用云函数来查询数据库。您可以开发一个可调用的云函数,它从应用程序前端接收搜索参数(例如地理区域),然后根据这些参数查询(即搜索)数据库,最后发回查询结果。

由于 Cloud Functions 以管理权限运行,它将完全绕过安全规则。因此,您可以设置安全规则,使最终用户无法浏览/获取您的整个数据库。

请注意,使用这种方法有一些缺点,特别是在定价、实时方面、本地缓存等方面。下面的文章详细描述了直接查询 Firebase 数据库或使用 Cloud Functions 查询的区别。


推荐阅读