小编lui*_*lui的帖子

简单(和)脏的 Firestore 身份验证规则

我在 PHP 项目中使用 REST API 通过curl (PHP curl) 将数据发送到 Firestore DB。

\n\n

我正在努力理解如何为“服务”设置身份验证规则,而通过 Google 授权建议的方法对我来说似乎太过分了。

\n\n

我的数据必须可供所有人读取,但只能由我的 PHP 服务器写入。

\n\n

到目前为止,我可以确保只有在发送的数据集中提供了特定代码(auth=123)时才会发生写入操作:

\n\n
service cloud.firestore {\n  match /databases/{database}/documents {\n    match /{document=**} {\n      allow read, write: if request.resource.data.auth==123\n      //request.auth.uid != null;\n    }\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题是,由于每个人都可以读取数据,因此很容易找到该字段(auth)并知道 123 是代码。

\n\n

两者中的任何一个都可能:

\n\n
    \n
  1. 发送标头(或其他未记录到数据库数据中的标头)并针对该标头而不是数据字段执行规则检查?

  2. \n
  3. 否则(不太优选)可能只向用户隐藏字段“auth”?

  4. \n
\n\n

我知道选项 2 原则上是不可能的,但即使我不知道如何解决,它也可能以某种方式解决。

\n\n

虽然我知道这不是最好的方法,但这足以保护我的应用程序。

\n\n

编辑

\n\n

可能最简单、最干净的解决方案是在 Firestore 数据库中使用一对电子邮件/密码创建一个用户,并在 PHP curl 请求中使用它

\n\n

我想我需要在此之后发出一个curl请求:

\n\n

https://firebase.google.com/docs/reference/rest/auth/#section-sign-in-email-password

\n\n

然后使用第一个请求中收到的令牌作为身份验证,通过另一个 PHPcurl 发出数据上传

\n\n

我觉得这是正确的道路,但是......我在第一个请求时陷入困境

\n\n
 404. …
Run Code Online (Sandbox Code Playgroud)

rest curl firebase-security firebase-authentication google-cloud-firestore

4
推荐指数
1
解决办法
1375
查看次数