我正在使用Firebase为所有数据存储构建iOS应用。用户创建一个帐户并使用密码和电子邮件登录。出于安全原因,我想将登录限制,或者至少是读取和写入访问权限仅限于应用程序。我不希望“任何人”创建帐户和访问数据,除非他们使用该应用程序。
据我了解,如果他们找到我的Firebase数据库的网址,则只要他们已登录,任何人都可以访问这些数据。这对我来说似乎是一个很大的安全隐患。
我当然实现了安全规则,但登录的用户仍然可以在不同的位置读取和写入数据库,所以基本上他们可以使用Javascript API连接我的Firebase数据库然后读写?任何人都可以创建用户,只要他们知道我的数据库的URL?
是否有某种方法可以阻止这种情况,例如在使用电子邮件和密码登录时使用自定义令牌?
答案 0 :(得分:0)
回答你的一些问题:
...但是登录的用户仍然可以读取和写入数据到数据库 在不同的位置,所以基本上他们可以连接我的Firebase 数据库使用Javascript API然后读写?
您可以使用the $other
rule确保没有额外的密钥写入您的Firebase数据库:
{
"rules": {
".read": "auth != null", // only authed users can read/write
".write": "auth != null",
"users": {
"$uid": {
".read": "auth.uid == $uid", // users can read/write their own data
".write": "auth.uid == $uid"
}
}
}
}
但您也可以使用更精细的规则来确保用户只能访问所需的数据。
{{1}}
任何人都可以创建用户,只要他们知道我的数据库的URL?
要创建用户,您还需要使用您在App Dashboard中指定的有效来源。这意味着,不只是拥有您网址的任何人都可以开始创建用户。