Javascript 火基。授予客户端直接写入服务器上数据库的访问权限是否安全?
我正在探索谷歌Firebase。从文档中我看到,他们授予客户端直接更改服务器上数据库的权限。。。这安全吗Javascript 火基。授予客户端直接写入服务器上数据库的访问权限是否安全?,javascript,security,firebase-realtime-database,Javascript,Security,Firebase Realtime Database,我正在探索谷歌Firebase。从文档中我看到,他们授予客户端直接更改服务器上数据库的权限。。。这安全吗 private void WriteNewScore(string userId, int score) { // Create new entry at /user-scores/$userid/$scoreid and at /leaderboard/$scoreid simultaneously string key = mDatabase.Child("scores"
private void WriteNewScore(string userId, int score)
{
// Create new entry at /user-scores/$userid/$scoreid and at /leaderboard/$scoreid simultaneously
string key = mDatabase.Child("scores").Push().Key;
LeaderBoardEntry entry = new LeaderBoardEntry(userId, score);
Dictionary<string, Object> entryValues = entry.ToDictionary();
Dictionary<string, Object> childUpdates = new Dictionary<string, Object>();
childUpdates["/scores/" + key] = entryValues;
childUpdates["/user-scores/" + userId + "/" + key] = entryValues;
mDatabase.UpdateChildrenAsync(childUpdates);
}
private void WriteNewScore(字符串userId,int分数)
{
//在/user scores/$userid/$scoreid和/leadboard/$scoreid同时创建新条目
string key=mDatabase.Child(“分数”).Push().key;
排行榜条目=新的排行榜条目(用户ID、分数);
Dictionary entryValues=entry.ToDictionary();
Dictionary childUpdates=新建字典();
childUpdates[“/scores/”+key]=entryValues;
childUpdates[“/user scores/”+userId+“/”+key]=entryValues;
mDatabase.UpdateChildrenAsync(childUpdates);
}
如果客户端可以被“模拟”或黑客攻击等等,那么应该使用AppEngine和REST接口吗?它实现服务器端安全逻辑,用于更改数据库或直接使用数据库,这是正确和安全的方法吗?或者是否有任何特定的解决方案来保证Firebase中数据库的安全?谢谢
文档页面:有一个,允许您描述数据的验证和访问规则。有了正确的规则,这可以和您自己编写的任何服务器端代码一样安全
例如,对于共享的代码片段,您将希望:
- 验证所写分数的格式是否正确,是否符合预期范围
- 验证
和/scores/$key
的值是否相同/user scores/$uid/$key
- 确保用户只能在自己的
下写入$uid
- 验证所写分数的格式是否正确,是否符合预期范围
- 验证
和/scores/$key
的值是否相同/user scores/$uid/$key
- 确保用户只能在自己的
下写入$uid
但编写此类规则的容忍度因开发者而异。许多开发人员更习惯于在命令式代码中执行此类(验证和访问)逻辑,在这种情况下,使用自定义服务器端代码也可以。如果这是您的偏好,我建议您签出,这使此操作变得简单,并与许多Firebase产品(如实时数据库)很好地集成。他们只能访问您为该用户配置的节点,并且只能在部署该节点的应用程序的上下文中访问该节点,这是因为没有身份验证,任何人都无法直接访问您的数据库。同样,您必须配置认证方法和安全规则,以管理与Firebase数据库的连接。他们只能访问您为该用户配置的节点,并且只能在部署该节点的应用程序的上下文中访问该节点,这是因为没有身份验证,任何人都无法直接访问您的数据库。同样,您必须配置身份验证方法和安全规则,以管理与Firebase数据库的连接