保护 Firebase 数据不被授权用户更新他们自己的数据
Protecting firebase data from Authorised users to update their own data
我的应用程序使用 AngularJS + 使用 google 的 Firebase 身份验证。
当用户注册到应用程序时,它会在数据库中创建该用户的条目,如下所示:
user
->Firebase Unique Key
-> UserId: "google ID"
-> User Name: "User Name"
-> Payment Status:"No"
现在,一旦用户登录,用户将看到支付选项,一旦支付完成,该特定 ID 的数据库值将根据 "Payment Status" 填充,如上文 JSON 所示。一旦付款状态为是,则只有用户可以查看主页。
我已经创建了如下所示的安全规则:
{
"rules": {
".read": "true",
"user":{
".write": "auth.provider == 'google' && auth.uid!=null"
}
}}
现在的问题是: 任何可以使用 google 登录的用户都有权写入该数据库。因此,一旦用户获得授权,用户就可以在数据库中进行更改。用户也可以 运行 来自本地主机的自己的代码,并且可以更改 database.I 不希望任何用户破解数据并将支付状态标记为 "Yes" 并继续访问主网站。
如何确保授权用户不会在此数据库中执行任何恶意activity。
Firebase 使用基于身份的安全模型:您可以根据用户的身份保护对数据的访问。一旦您授权用户编写特定的 属性,他们就可以编写 属性.
在您的用例中,允许用户更改他们的付款状态似乎不是一个好主意。因此,他们不应该对该 属性 具有写入权限,无论他们是 运行 您的应用程序还是他们自己的代码。
因此您必须让另一个实体设置该字段。这可以是人工管理员或服务器。
人与人之间的互动并不像您想象的那么罕见。许多 Web 服务首先让所有者检查付款并更新受保护的元数据(您的场景中的付款状态)。一旦这变得难以控制,您可能已准备好选择其他选项。
一个, perform the necessary checks and then set the user's payment status. Note that this doesn't have to be a very beefy server, since all it does is interact with the Firebase Database. See this article for a good explanation.
我的应用程序使用 AngularJS + 使用 google 的 Firebase 身份验证。 当用户注册到应用程序时,它会在数据库中创建该用户的条目,如下所示:
user
->Firebase Unique Key
-> UserId: "google ID"
-> User Name: "User Name"
-> Payment Status:"No"
现在,一旦用户登录,用户将看到支付选项,一旦支付完成,该特定 ID 的数据库值将根据 "Payment Status" 填充,如上文 JSON 所示。一旦付款状态为是,则只有用户可以查看主页。
我已经创建了如下所示的安全规则:
{
"rules": {
".read": "true",
"user":{
".write": "auth.provider == 'google' && auth.uid!=null"
}
}}
现在的问题是: 任何可以使用 google 登录的用户都有权写入该数据库。因此,一旦用户获得授权,用户就可以在数据库中进行更改。用户也可以 运行 来自本地主机的自己的代码,并且可以更改 database.I 不希望任何用户破解数据并将支付状态标记为 "Yes" 并继续访问主网站。
如何确保授权用户不会在此数据库中执行任何恶意activity。
Firebase 使用基于身份的安全模型:您可以根据用户的身份保护对数据的访问。一旦您授权用户编写特定的 属性,他们就可以编写 属性.
在您的用例中,允许用户更改他们的付款状态似乎不是一个好主意。因此,他们不应该对该 属性 具有写入权限,无论他们是 运行 您的应用程序还是他们自己的代码。
因此您必须让另一个实体设置该字段。这可以是人工管理员或服务器。
人与人之间的互动并不像您想象的那么罕见。许多 Web 服务首先让所有者检查付款并更新受保护的元数据(您的场景中的付款状态)。一旦这变得难以控制,您可能已准备好选择其他选项。
一个