Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/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
Firebase 服务器端请求的firestore安全规则_Firebase_Flutter_Google Cloud Firestore_Firebase Security_Firebase Admin - Fatal编程技术网

Firebase 服务器端请求的firestore安全规则

Firebase 服务器端请求的firestore安全规则,firebase,flutter,google-cloud-firestore,firebase-security,firebase-admin,Firebase,Flutter,Google Cloud Firestore,Firebase Security,Firebase Admin,从去年秋天起我就开始使用扑火了 注意:服务器客户端库绕过了所有云Firestore安全性 规则,而是通过Google应用程序默认值进行身份验证 资格证书如果您正在使用服务器客户端库或其他库 或RPC API,请确保设置身份和访问管理(IAM) 对于云Firestore 以上评论来自firebase团队。这听起来像是评论中的“服务器客户端库”或API指的是来自我的移动应用程序之外的请求,它们绕过了云firestore安全规则。但是,当我在未经许可的情况下尝试与Postman相同的get请求时,Po

从去年秋天起我就开始使用扑火了

注意:服务器客户端库绕过了所有云Firestore安全性 规则,而是通过Google应用程序默认值进行身份验证 资格证书如果您正在使用服务器客户端库或其他库 或RPC API,请确保设置身份和访问管理(IAM) 对于云Firestore

以上评论来自firebase团队。这听起来像是评论中的“服务器客户端库”或API指的是来自我的移动应用程序之外的请求,它们绕过了云firestore安全规则。但是,当我在未经许可的情况下尝试与Postman相同的get请求时,Postman控制台中的响应很好,这意味着出现了一个权限拒绝错误

所以,我的问题来了。我希望知道哪些类型的请求与官方参考中提到的绕过所有安全规则的“服务器客户端库”或“REST或RPC API”完全相同。邮递员正是“剩下的”,firebase在本例中完全按照我的要求工作(产生了拒绝许可)。所以一定有一些特定的类型,firebase团队实际上打算提及,要小心

我知道firebase admin sdk是可能的服务器端库之一,但当我们尝试访问firebase admin sdk时,应该需要完全相同的权限或身份验证过程,就像firebase团队评论的那样,firebase admin sdk可以控制高于安全规则的firebase数据。因此,问题集中在攻击者在没有适当安全程序的情况下恶意操纵firebase的解决方案上


希望一些firebase大师能以令人敬畏的知识和经验为这个问题提供冷静的答案!提前感谢[:

正如其名称所示,服务器客户端库将从服务器或云功能等“可信环境”中使用

从您的服务器(或您的受信任环境)与Firebase server API交互时,您不会像从客户端应用程序进行身份验证那样进行身份验证。您的服务器应该使用通过Firebase身份验证服务创建的用户帐户(例如电子邮件/密码帐户)。有关详细信息,请参阅Firebase文档

请注意,对于云函数,您可以不带参数地初始化AdminSDK。在这种情况下,SDK使用Google应用程序默认凭据(正如您在问题中提到的文档摘录中所示)

因此,当您的服务器(或云功能)运行时与Firebase服务器API交互,因为它是通过服务帐户进行身份验证的,所以请求会绕过所有云Firestore安全规则。换句话说,如果您想执行一些检查以允许/禁止基于特定参数/值的特定操作,您必须在代码中实现它们


对于REST API,也是一样的。REST API可以从客户端应用程序(web应用程序、Flatter应用程序等)或服务器使用

根据它是客户机还是服务器,您应该使用Firebase身份验证ID令牌或服务帐户(连同Google Identity OAuth 2.0令牌)进行身份验证,如中所述

因此,当您在未经许可的情况下使用Postman向API发出请求时,正如您所做的那样,API检测到没有与该请求关联的Google Identity OAuth 2.0令牌或Firebase身份验证ID令牌,然后强制执行安全规则=>您将收到一个“权限拒绝错误”


总之,如果您正确定义了安全规则,您就不会遇到“攻击者恶意操纵”数据库的任何问题


但是请注意,如本文所述,仅基于
auth!=null的安全规则可能不足以保护您的数据。

正如其名称所示,服务器客户端库将从服务器或类似云功能的“可信环境”中使用

从您的服务器(或您的受信任环境)与Firebase server API交互时,您不会像从客户端应用程序进行身份验证那样进行身份验证。您的服务器应该使用通过Firebase身份验证服务创建的用户帐户(例如电子邮件/密码帐户)。有关详细信息,请参阅Firebase文档

请注意,对于云函数,您可以不带参数地初始化AdminSDK。在这种情况下,SDK使用Google应用程序默认凭据(正如您在问题中提到的文档摘录中所示)

因此,当您的服务器(或云功能)运行时与Firebase服务器API交互,因为它是通过服务帐户进行身份验证的,所以请求会绕过所有云Firestore安全规则。换句话说,如果您想执行一些检查以允许/禁止基于特定参数/值的特定操作,您必须在代码中实现它们


对于REST API,也是一样的。REST API可以从客户端应用程序(web应用程序、Flatter应用程序等)或服务器使用

根据它是客户机还是服务器,您应该使用Firebase身份验证ID令牌或服务帐户(连同Google Identity OAuth 2.0令牌)进行身份验证,如中所述

因此,当您在未经许可的情况下使用Postman向API发出请求时,正如您所做的那样,API检测到没有与该请求关联的Google Identity OAuth 2.0令牌或Firebase身份验证ID令牌,然后强制执行安全规则=>您将收到一个“权限拒绝错误”


总之,如果您正确定义了安全规则,您就不会遇到“攻击者恶意操纵”数据库的任何问题

但是请注意,仅基于
auth!=null的安全规则可能不足以保护您的数据,如本文所述。