如何利用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让你在多个设备上存储、同步数据,并在云端查询你的应用数据。它有一套安全规则,帮助你控制访问和保护用户的数据。
安全规则是严格的,因为只有经过批准的应用程序才有read 、write 、validate 的权限。
安全性对你的应用程序至关重要。因此,你应该确保你了解如何使用Firebase规则,特别是在处理敏感数据时。
这是防止数据泄露的最好方法,也是识别漏洞的最好方法。
用安全规则保护你的Firebase应用
安全规则可以保护你在实时数据库和云端Firestore中的数据不被非法访问。
我们将通过使用Cloud Firestore建立一个简单的信息传递应用来演示如何工作。
第1步:创建一个新的Firebase项目
首先,导航到Firebase并使用你的Google 账户登录。

登录成功后,导航到Google Firebase控制台,点击add project 按钮,创建一个新项目。
给你的项目起一个合适的名字,然后按照屏幕上的步骤完成。
第2步:设置云端Firestore
在你的Firebase控制台,选择Cloud Firestore ,你会被引导到数据库部分。
然后,点击create database 按钮,创建一个新的数据库。
在其中添加一个名为chat 的集合和一个名为message 的文档,如下图所示。

第3步:创建一个基本的信息传递应用程序
我们的项目很简单。你只需要创建一个放置消息应用程序的文件夹。然后添加index.html 和script.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>
下面是该应用程序的样子。

第4步:Firebase安全规则
读和写规则
要添加这个规则,请在Firebase控制台的data tab 旁边导航到rules tab 。
你会看到Cloud Firestore策略配置,看起来像这样。

要更新Cloud Firestore的安全策略,请点击左上角的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安全规则来避免这些问题。