Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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 如何在web CMS中隐藏文档字段,而不是在android&;网间网操作系统_Firebase_Firebase Authentication_Google Cloud Firestore - Fatal编程技术网

Firebase 如何在web CMS中隐藏文档字段,而不是在android&;网间网操作系统

Firebase 如何在web CMS中隐藏文档字段,而不是在android&;网间网操作系统,firebase,firebase-authentication,google-cloud-firestore,Firebase,Firebase Authentication,Google Cloud Firestore,你能帮我,给我一些建议,并指导我更好地保护我的项目吗 这个项目是一个问答测验 我有一个由管理员(自定义声明)管理的基于web的CMS,该管理员将Firestore连接到CRUD数据 其他用户可以连接前端仪表板查看问题并回答问题 有两个应用程序,iOS和android,用户还可以下载应用程序并回答问题 Firestore中有一个包含答案文档的“问题”集合,每个答案包含一个字段“是否正确”\u答案(布尔值) 我如何阻止用户,使他们无法读取该字段?答案是否正确 如果一个聪明的用户尝试注入下面的代码

你能帮我,给我一些建议,并指导我更好地保护我的项目吗

这个项目是一个问答测验

  • 我有一个由管理员(自定义声明)管理的基于web的CMS,该管理员将Firestore连接到CRUD数据

  • 其他用户可以连接前端仪表板查看问题并回答问题

  • 有两个应用程序,iOS和android,用户还可以下载应用程序并回答问题

Firestore中有一个包含答案文档的“问题”集合,每个答案包含一个字段“是否正确”\u答案(布尔值)

我如何阻止用户,使他们无法读取该字段?答案是否正确

如果一个聪明的用户尝试注入下面的代码,他将看到哪个是问题的正确答案

firebase.firestore()
          .collection("questions")
          .doc("question_1")
          .collection("answers")
          .doc("answer_1")
          .get().then(function(snap){

console.log(snap.data().is_correct_answer );
        })
可能是数据库相关的问题、firestore规则、错误的模式,。。。我真的不知道。我只需要向用户隐藏正确答案。我不想让他们找到正确答案的途径


谢谢。

Firestore客户端SDK始终检索完整的文档。无法返回(或限制访问)文档的一部分


如果希望某些字段不可访问,则需要将这些字段存储到单独的文档中。然后,您可以使用安全规则控制对该特定文档的访问,并仅为本应具有访问权限的用户读取受限文档。

Firestore客户端SDK始终检索完整文档。无法返回(或限制访问)文档的一部分


如果希望某些字段不可访问,则需要将这些字段存储到单独的文档中。然后,您可以使用安全规则控制对该特定文档的访问,并仅为本应具有访问权限的用户读取受限文档。

另一种方法是限制用户对答案的访问。让用户在完成测验/每个问题时提交“答案”表,并使用云功能检查提交的答案,检索私人答案文档并更新提交的答案表和分数。

另一种方法是限制用户访问答案。让用户在完成测验/每个问题时提交“答案”表,并使用云功能检查提交的答案,检索私人答案文档并更新提交的答案表,并附上分数。

感谢Frank van Puffelen和Jason Berryman提供的解释,我终于找到了解决问题的办法:

我触发一个HTTP函数,询问ADMINSDK用户是否存在。如果为true,则传递JWT并登录用户。由于JWT后端,该用户发出的所有请求都会被检查。这样做可以防止用户在客户端直接与Firebase通信。应用程序是加密的,连接是HTTPS


我不知道这是否安全和“良好做法”,但它确实对我有效。

多亏了弗兰克·范·帕夫伦和杰森·贝里曼的解释,我终于找到了解决问题的办法:

我触发一个HTTP函数,询问ADMINSDK用户是否存在。如果为true,则传递JWT并登录用户。由于JWT后端,该用户发出的所有请求都会被检查。这样做可以防止用户在客户端直接与Firebase通信。应用程序是加密的,连接是HTTPS


我不知道这是否安全和“良好做法”,但它确实对我有效。

谢谢您的回答。有没有办法保护这些单独的文档,以便只有iOS或Android应用程序才能访问它们?我不是应用程序开发人员,所以我一点也不知道。如果用户可以在web浏览器和应用程序中访问数据库,那么基于web的cms似乎是个坏主意?如果用户希望在应用程序中看到正确的答案,他必须有一个安全标志,但有了这个安全标志,他可以在基于web的cms中看到正确的答案。Firebase中的访问控制基于用户身份,而不是用户用于访问数据的平台。这也行不通,因为任何用户都可以登录到任何平台(API和配置数据都在你的每个应用程序中),所以恶意的Android用户可以编写自己的web代码来读取其他数据。没有任何安全规则,是否可以反编译iOs或android应用程序以访问数据库并对其进行操作?所有配置数据都在应用程序中,否则应用程序无法访问数据库。没有任何东西允许仅从特定应用程序/平台访问数据库。那么,如果恶意用户尝试反编译应用程序,如果未建立Firestore规则,他将能够访问Firestore?从那以后我就不再打扰你了;)谢谢你的回答。有没有办法保护这些单独的文档,以便只有iOS或Android应用程序才能访问它们?我不是应用程序开发人员,所以我一点也不知道。如果用户可以在web浏览器和应用程序中访问数据库,那么基于web的cms似乎是个坏主意?如果用户希望在应用程序中看到正确的答案,他必须有一个安全标志,但有了这个安全标志,他可以在基于web的cms中看到正确的答案。Firebase中的访问控制基于用户身份,而不是用户用于访问数据的平台。这也行不通,因为任何用户都可以登录到任何平台(API和配置数据都在你的每个应用程序中),所以恶意的Android用户可以编写自己的web代码来读取其他数据。没有任何安全规则,是否可以反编译iOs或android应用程序以访问数据库并对其进行操作?所有配置数据都在应用程序中,否则应用程序无法访问数据库。没有任何东西允许仅从特定的应用程序/平台访问数据库。好的,如果