如何用Firebase安全规则保护应用程序

248 阅读5分钟

如何利用Firebase安全规则保护应用程序

Firebase是最受欢迎的在线数据库之一。在本指南中,我们将学习如何利用各种规则保护Firebase应用程序。

Firebase的安全规则决定了谁可以在数据库上读或写。我们将通过建立一个简单的项目深入了解安全规则是如何工作的。

前提条件

要学习本教程,你将需要一些JavaScript知识。此外,一些后端知识也是必要的,因为它将帮助你理解各种Firebase概念。

你还需要一个像Visual Studio Code这样的文本编辑器和在你的机器上安装Node.js。

什么是Firebase?

Firebase是一个谷歌的后端服务,它允许开发者建立强大的Android、Web和IOS应用程序。

Firebase为开发者提供工具和服务,帮助他们创建高质量的应用程序,加快后端开发,跟踪分析,并通过云端信息传递吸引用户。

Cloud Firestore是一个NoSQL数据库系统,以JSON文件存储数据。它是一个优秀的后端服务,可以帮助你节省大量时间。

有了Firebase,你可以进行多种认证,管理数据库,存储媒体文件,运行分析,等等。

数据在所有的应用程序中都是必不可少的。Firebase有两个数据库服务。实时数据库和Cloud Firestore数据库。

在本教程中,我们将集中讨论Cloud Firestore数据库。

使用Firebase的流行应用包括。

  • [eBay]
  • [阿里巴巴]
  • [Todoist]
  • [纽约时报]

为什么安全在云端Firestore中很重要

出于安全考虑,一些应用程序需要人们在云中存储数据。

Cloud Firestore让你在多个设备上存储、同步数据,并在云端查询你的应用数据。它有一套安全规则,帮助你控制访问和保护用户的数据。

安全规则是严格的,因为只有经过批准的应用程序才有readwritevalidate 的权限。

安全性对你的应用程序至关重要。因此,你应该确保你了解如何使用Firebase规则,特别是在处理敏感数据时。

这是防止数据泄露的最好方法,也是识别漏洞的最好方法。

用安全规则保护你的Firebase应用

安全规则可以保护你在实时数据库和云端Firestore中的数据不被非法访问。

我们将通过使用Cloud Firestore建立一个简单的信息传递应用来演示如何工作。

第1步:创建一个新的Firebase项目

首先,导航到Firebase并使用你的Google 账户登录。

Firebase

登录成功后,导航到Google Firebase控制台,点击add project 按钮,创建一个新项目。

给你的项目起一个合适的名字,然后按照屏幕上的步骤完成。

第2步:设置云端Firestore

在你的Firebase控制台,选择Cloud Firestore ,你会被引导到数据库部分。

然后,点击create database 按钮,创建一个新的数据库。

在其中添加一个名为chat 的集合和一个名为message 的文档,如下图所示。

Create database

第3步:创建一个基本的信息传递应用程序

我们的项目很简单。你只需要创建一个放置消息应用程序的文件夹。然后添加index.htmlscript.js 文件。

我们还将在我们的应用程序中添加Firebase。有两种方法可以将Firebase添加到Web项目中。

第一种方法是在你的终端使用Node Package Manager(NPM)。

npm install firebase

第二种方法是使用内容交付网络(CDN),将其添加到你的项目中。

<script src="https://www.gstatic.com/firebasejs/8.2.1/firebase-app.js"></script>

<script src="https://www.gstatic.com/firebasejs/8.2.1/firebase-database.js"></script>

index.html 文件包含我们的HTML代码和其他文件的链接。要启动该应用程序,请复制并粘贴下面的代码。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Firebase Cloud Firestore</title>
    <link rel="stylesheet" href="">
  </head>
  <body>

    <!-- scripts -->
    <script src="https://www.gstatic.com/firebasejs/8.2.1/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.2.1/firebase-database.js"></script>
    <script src="script.js"></script>
    <header>
        <h2>Firebase ChatApp</h2>
      </header>
  
      <div id="chat">
        <!-- messages will display here -->
        <ul id="messages"></ul>
  
        <!-- form to send message -->
        <form id="message-form">
          <input id="message-input" type="text" />
          <button id="message-btn" type="submit">Send</button>
        </form>
      </div>
  </body>
</html>

下面是该应用程序的样子。

Chat App

第4步:Firebase安全规则

读和写规则

要添加这个规则,请在Firebase控制台的data tab 旁边导航到rules tab

你会看到Cloud Firestore策略配置,看起来像这样。

Cloud Firestone Policy Configuration

要更新Cloud Firestore的安全策略,请点击左上角的Edit rules ,改变安全规则。

Edit Rules

语法。

service cloud.firestore {
  match /databases/{database}/documents {
    match /<path>/ {
      allow read, write: if <condition>;
    }
  }
}

添加以下规则。

service cloud.firestore {
  match /databases/{database}/documents {
  match /chat/{anything=**} {
  allow read, write: if true;
  }
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

这个规则将允许所有用户读写chat 集合中的数据。

需要认证的规则

如果需要给已认证的用户提供读/写权限,你可以使用request.auth 条件。

为了实现这一点,检查签到用户的id(uid)是否存在。

云防火墙策略最后看起来是这样的。

service cloud.firestore {
  match /databases/{database}/documents {
  match /chat/{anything=**} {
  allow read, write: if true;
  }
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

保护登录的用户数据

登录的用户数据应始终受到保护。有了这个安全规则,用户只有在认证成功后才能更新他们的数据。

service cloud.firestore {
  match /databases/{database}/documents {
  match /users/userId {
      allow read, write: if request.auth.uid == userId
    }
  }
}

你可以使用双因素认证(2FA)来增强安全性。例如,你可以使用电子邮件进行验证,使用auth.token.email_verified ,如下图所示。

service cloud.firestore {
  match /databases/{database}/documents {
  match /users/userId {
      allow read, write: if request.auth.uid == userId
      && request.auth.token.email_verified ==true
    }
  }
}

结论

确保你的Firebase应用程序的安全是非常重要和容易的。然而,许多开发者没有保护好数据库,使其容易受到攻击。

你可以使用本文中讨论的Firebase安全规则来避免这些问题。