Firebase 是否可以确定传入请求的来源?

Firebase 是否可以确定传入请求的来源?,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,是否可能知道云firestore文档的传入请求源的主机名?我想编写一个数据库规则,其形式为allow write:if request.resource.data.source\u host\u name==某个预定义的值。这是一个web应用程序,因此我试图找到一种好方法来限制谁可以在不使用传统身份验证方法的情况下写入我的数据库。这种规则在Cloud Firestore中是不可能的。它也不会很安全,因为它是可能的 如果您想限制谁可以访问您的数据库,唯一受支持的机制是通过安全规则和Firebase

是否可能知道云firestore文档的传入请求源的主机名?我想编写一个数据库规则,其形式为allow write:if request.resource.data.source\u host\u name==某个预定义的值。这是一个web应用程序,因此我试图找到一种好方法来限制谁可以在不使用传统身份验证方法的情况下写入我的数据库。

这种规则在Cloud Firestore中是不可能的。它也不会很安全,因为它是可能的


如果您想限制谁可以访问您的数据库,唯一受支持的机制是通过安全规则和Firebase身份验证。

云Firestore无法实现这种规则。它也不会很安全,因为它是可能的


如果您想限制谁可以访问您的数据库,唯一受支持的机制是通过安全规则和Firebase身份验证。

以下是我在与Firestore交互时记录客户端IP地址的解决方案。我同意Doug的观点,这不会防止IP欺骗。尽管如此,这对我的目的还是有帮助的

诀窍是使用云函数创建中介API端点,然后与Firestore交互。下面是一个谷歌云函数的例子

const admin=requirebase admin; 常量函数=RequireRefireBase函数; admin.initializeApp; exports.yourEndpoint=functions.https.onRequestreq,res=>{ //从请求对象中的头获取IP地址 常量ipAddress=getIPAddressreq; //使用ipAddress在firestore数据库中执行任何需要的操作 admin.firestore.collection'ipAddress'。添加{address:ipAddress} .thenwriteResult=>{ 返回res.status200.send; } .catcherror=>{ 返回res.status500.send; }; }; //Helper函数从请求头中提取IP地址 函数getIPAddressreq{ 回来 请求标头[快速客户端ip]|| 请求标头[x-转发-for]|| req.headers[没有IP,可能是因为我们处于开发模式] ; }
注意:在开发模式下无法获得IP地址,因为Firebase模拟器没有创建正确的头。

以下是我在与Firestore交互时记录客户端IP地址的解决方案。我同意Doug的观点,这不会防止IP欺骗。尽管如此,这对我的目的还是有帮助的

诀窍是使用云函数创建中介API端点,然后与Firestore交互。下面是一个谷歌云函数的例子

const admin=requirebase admin; 常量函数=RequireRefireBase函数; admin.initializeApp; exports.yourEndpoint=functions.https.onRequestreq,res=>{ //从请求对象中的头获取IP地址 常量ipAddress=getIPAddressreq; //使用ipAddress在firestore数据库中执行任何需要的操作 admin.firestore.collection'ipAddress'。添加{address:ipAddress} .thenwriteResult=>{ 返回res.status200.send; } .catcherror=>{ 返回res.status500.send; }; }; //Helper函数从请求头中提取IP地址 函数getIPAddressreq{ 回来 请求标头[快速客户端ip]|| 请求标头[x-转发-for]|| req.headers[没有IP,可能是因为我们处于开发模式] ; }
注意:在开发模式下,您不会获得IP地址,因为Firebase模拟器不会创建正确的头。

您能解释一下主机名是什么意思吗?每个用户都有一个IP地址,但没有主机名。您希望达到哪些限制,而Firebase身份验证无法达到这些限制?@JasonBerryman-谢谢您的提问。由于此特定应用程序的特殊性,无法使用Firebase身份验证。也许可以使用匿名身份验证,但我认为这不会提供足够的安全性。我正在寻找一种方法来添加一个条件,即用户来自已知站点。您能解释一下主机名是什么意思吗?每个用户都有一个IP地址,但没有主机名。您希望达到哪些限制,而Firebase身份验证无法达到这些限制?@JasonBerryman-谢谢您的提问。由于此特定应用程序的特殊性,无法使用Firebase身份验证。也许可以使用匿名身份验证,但我认为这不会提供足够的安全性。我正在寻找一种方法来添加一个条件,即用户来自已知站点。感谢ResponseHaks提供的responsehi,如何更改firestore客户端的端点以转到云功能?thxhi,如何更改firestore客户端的端点以转到云函数?谢谢