只是想知道...... 由于Firebase的初始化在脚本标记中是公开的:
<script>
// Initialize Firebase
var config = {
apiKey: "key",
authDomain: "domain",
databaseURL: "url",
storageBucket: "bucket",
messagingSenderId: "id"
};
firebase.initializeApp(config);
</script>
理论上不可能,有了这些信息,任何人都可以操纵数据库吗?
答案 0 :(得分:2)
由于Firebase是云托管数据库,因此您的用户需要访问它。该脚本中的信息允许每个人找到您的数据库,从而访问它。
但是通过实现@FowotadeBabajide链接到您的安全规则,您可以控制谁可以访问哪些数据,并验证数据是否符合您的应用所期望的格式。
主题非常广泛,因此我建议从Firebase documentation on database security开始,然后使用firebase-security标记阅读一些问题。
答案 1 :(得分:1)
这取决于您如何设置读取和写入数据到firebase数据库中的节点的权限(实时数据库规则语言)。
Firebase数据库规则设计:
假设一个节点(又名“父”),其中每个用户都有权在auth之后创建一个子节点。
{
"rules": {
"parent":
".read": true,
".write": "auth != null"
}
}
Firebase数据库操作:
用户2通过“push()”“推送”数据并创建一个新的子节点(randomIdforchild2)。
parent
|--randomIdforchild2
|--resetparentData: false
|--addData: true
用户3通过“push()”“推送”一些数据,从而产生一个新的子节点(randomIdforchild3)。
parent
|--randomIdforchild2
| |--resetparentData: false
| |--addData: true
|--randomIdforchild3
|--resetparentData: false
|--addData: true
用户1通过“set()”向父节点添加数据。这将重置父节点。
parent
|--childNodeNameByUser1
|--resetparentData: true
|--addData: true
对于此特定方案,您应重新考虑数据结构和节点访问权限(firebase数据库安全规则)。
由于每个用户都拥有权限,探索开发人员“用户1”实际上可以发出“set()”请求来代替覆盖以前数据的“push()”。在这里,您需要重新构建数据模型。
在您的情况下可能会有所不同。
希望这能让你清楚。