Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何防止(MongoDB)数据库的未授权读/写?_Database_Mongodb_Firebase_Authentication_Authorization - Fatal编程技术网

Database 如何防止(MongoDB)数据库的未授权读/写?

Database 如何防止(MongoDB)数据库的未授权读/写?,database,mongodb,firebase,authentication,authorization,Database,Mongodb,Firebase,Authentication,Authorization,假设我有一个MongoDB Atlas数据库连接到我的服务器,Firebase作为身份验证。我的Firebase服务器逻辑可以检查用户是否登录。好。但它如何检查从MongoDB数据库读取或更新数据的请求是否得到授权 假设有人知道我的服务器位置,并请求在MongoDB中增加某个用户+1000的“分数”值(它连接到的地方)。恶意请求人通过使用Firebase身份验证凭据登录,然后使用返回的访问密钥+密码(即他通过了Firebase身份验证)结合恶意自定义代码覆盖数据库来实现此目的;没有任何东西阻止他

假设我有一个MongoDB Atlas数据库连接到我的服务器,Firebase作为身份验证。我的Firebase服务器逻辑可以检查用户是否登录。好。但它如何检查从MongoDB数据库读取或更新数据的请求是否得到授权

假设有人知道我的服务器位置,并请求在MongoDB中增加某个用户+1000的“分数”值(它连接到的地方)。恶意请求人通过使用Firebase身份验证凭据登录,然后使用返回的访问密钥+密码(即他通过了Firebase身份验证)结合恶意自定义代码覆盖数据库来实现此目的;没有任何东西阻止他访问整个数据库(即他获得了完全授权)。如何在实践中防止这种情况


也许我在这里遗漏了一些东西,但像Firebase/AWS这样的工具似乎放大了Cognito,允许您验证,但它们不允许您有效地授权使用非Firebase/非Cognito服务。。?我正在尝试了解这在实践中是如何工作的…

在实践中,您可能需要某些层次。您可能正在寻找的是一个API。API将使用Firebase身份验证,但您将限制所有数据库事务来自授权用户,即API。从那里,您可以基于某些用户限制权限,所有这些逻辑都将由API处理

这里的关键是您的用户应该具有受限权限,并且您的API应该调解他的请求。用户永远不应该直接访问数据库,这对您的数据非常危险,尤其是当它包含任何远程敏感信息时


您的问题是非常开放的,因此我强烈建议您阅读软件架构原则。

如果您相信Firebase(和AWS放大Cognito)允许您限制对其服务的访问,那么Hi mustache。但是MongoDB是一种外部服务,它是如何工作的呢?此外,我还添加了一个连接到MongoDB Atlas集群的服务器,这意味着用户不能直接访问数据库MongoDB的数据库,也可以限制用户的访问,尽管您的用户实际上不是最终用户。用户将是向数据库发出读写请求的服务,而请求的用户将受到最终用户对应用程序的访问级别的限制。