android - 为测验应用程序选择什么云函数或数据库
问题描述
我有一个测验应用程序,它使用一个名为 Question 的 Firestore 文档,看起来像
现在,每当加载测验时,都会从 firestore 加载此数据,会显示问题并根据“答案”字段检查答案。现在任何顽皮的程序员都可以更改客户端代码以查看所有问题的答案,并可能赢得比赛(比赛获胜者有报酬)。防止这种情况的一种方法是删除答案字段并创建新的答案文档并使用云功能来检查正确答案。这可能会增加计费,因为每个用户可能会调用数千个函数调用。
有什么方法可以解决这个问题,如果没有,哪种方法更好
- 使用云功能检查答案
- 创建单独的答案集合
解决方案
数据只有在用户无法访问时才是安全的,您可以尝试使用以下任一方法来保护它:
- 代表问题和答案的不同文件;
- 将所有内容保存在同一个集合中,并使用 firebase 规则控制访问,如本社区答案所示;
- 使用两个不同的 Cloud Functions 获取相同的文档作为问题和答案,然后根据您所处的执行阶段转换为不同的 json 响应;
所有这些选项都会增加您的成本,因为数据将被多次读取,并且涉及云功能成本,不幸的是它就是这样。
我建议您尝试采用第一种或第二种方法,因为它们都是您要实现的目标的安全选择,并且比第三种选择花费更少。
推荐阅读
- c# - ASP.NET MVC 忘记密码电子邮件链接未格式化为 Html
- c# - 不能在索引器获取方法中使用 LINQ 查询
- firebase - 使用 IONIC 3 使用 Azure 通知中心
- jquery-ui - 带有动态 DIV 的 JQuery 可排序
- node.js - io.on() 中的“套接字”参数是什么
- excel - 条件下在数据表的特殊位置插入一行
- sql - 使用 sql 检查列表中的变量
- powershell - 在充满日志文件 powershell 脚本的几个文件夹中查找错误
- sql - 如何选择创建为创建默认值然后绑定到用户定义的数据类型的默认值?
- angular - 如何发送网络推送通知