作者:千__鱼姐姐 | 来源:互联网 | 2023-02-12 18:23
我很好奇,如果用户能够将任何数据写入他们具有写权限的密钥.当然,通常这是通过他们正在使用的应用程序进行身份验证来完成的.但它受保护的程度如何?如果我连接到我的wifi,我可以使用篡改数据来更改正在发送的网络活动.
如上所述:firebase是否使用每个帐户的唯一密钥加密数据?它表示数据在写入数据库之前已加密.但是,当密钥没有"到达"Firebase时,这不包括更改密钥的值.
是否可以通过监控网络活动来改变价值,例如篡改数据?
另外,让我们说这些是一些规则:
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
除了使用我的应用程序之外,用户还能以任何其他方式验证自己吗?如果经过身份验证的用户有写入规则,那么直接在数据库中更改值是多么容易?
谢谢
1> Michael Blei..:
在您提供的规则中,用户可以将任意数据写入与其自身对应的节点uid
,这只能通过使用Firebase身份验证形式登录获得(包括使用Firebase管理SDK创建自定义令牌服务器端) ).
100%的Firebase实时数据库流量通过TLS加密连接发送.这种交通无法在中间进行,并且在飞行中会改变它.
您可以信任Firebase数据库安全规则来完成它们的工作,但您可以编写可以充分保护给定应用程序用例数据的强大规则.我建议在任何地方都使用.validate
结构规则和细粒度.write
规则.要记住的另一个重要提示是授权是分层的.一旦.write
规则与客户端匹配,该节点的所有子节点都可以由该客户端编写.