我读了很多关于这方面的文章,但没有找到一个适当的建议,官方的方式来确保选票的统计。
我们如何确保安全;
对于云功能的建议,只运行一个类似的或任何类型的投票的云函数真的实用吗?
谢谢,
发布于 2022-09-28 20:17:58
FieldValue.increment(1)让恶意用户不能增加5,6等等?
您可以比较安全规则中的当前值和新值,如下所示:
allow update: if request.resource.data.fieldName == resource.data.fieldName + 1;从文档中,request.resource变量包含文档的未来状态,而resource.data是当前值。
然而,并不阻止用户多次使用increment(1)。您必须将用户的UID存储在某个地方来检查。
如果我们检查userID(针对ex;postID/like/userID),那么检查它是否不存在有多确定呢?
您可以使用exists()函数检查用户是否已经投票,但必须确保首先添加文档。用户可以增加计数,但阻止添加其投票记录的create操作符,从而允许他们进行多次投票。
解决方法之一是只添加投票文档,而不是增加计数,但随后您必须读取所有文档才能获得总票数,或者使用用于云函数的Firestore触发器在后台更新计数。
请您展示一下创建基本用户喜欢/投票安全结构示例的建议的正确方法吗?
当使用云函数时,可以确保计数会增加,用户的投票记录也会被添加,没有人可以反向工程代码。
发布于 2022-10-05 09:24:34
您可以从客户端执行所有这些操作,并使用规则,不需要云函数。
!exists和existsAfter后是否存在。发布于 2022-10-05 10:07:27
或者您可以使用Firebase函数为您完成任务。
这些是服务器端代码(这里是防火墙),所以没有人可以修改它.
https://stackoverflow.com/questions/73887255
复制相似问题