我在 PHP 项目中使用 REST API 通过curl (PHP curl) 将数据发送到 Firestore DB。
\n\n我正在努力理解如何为“服务”设置身份验证规则,而通过 Google 授权建议的方法对我来说似乎太过分了。
\n\n我的数据必须可供所有人读取,但只能由我的 PHP 服务器写入。
\n\n到目前为止,我可以确保只有在发送的数据集中提供了特定代码(auth=123)时才会发生写入操作:
\n\nservice 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}\nRun Code Online (Sandbox Code Playgroud)\n\n问题是,由于每个人都可以读取数据,因此很容易找到该字段(auth)并知道 123 是代码。
\n\n两者中的任何一个都可能:
\n\n发送标头(或其他未记录到数据库数据中的标头)并针对该标头而不是数据字段执行规则检查?
否则(不太优选)可能只向用户隐藏字段“auth”?
我知道选项 2 原则上是不可能的,但即使我不知道如何解决,它也可能以某种方式解决。
\n\n虽然我知道这不是最好的方法,但这足以保护我的应用程序。
\n\n编辑
\n\n可能最简单、最干净的解决方案是在 Firestore 数据库中使用一对电子邮件/密码创建一个用户,并在 PHP curl 请求中使用它
\n\n我想我需要在此之后发出一个curl请求:
\n\nhttps://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