【发布时间】:2023-02-05 10:43:41
【问题描述】:
我希望能够保护我的增量逻辑不被前端滥用 我当前的前端代码
// Initial Payload
const surfacePayload: SurfacePayload = {
gender: selected.gender,
unit: unit.current,
// will increment the count in db by +1
count: increment(+1),
src: currentUser?.uid!,
};
await setDoc(doc(db, docRef, surfacePayload);
我的安全规则逻辑如下:
// requestData.count types
request.resource.data.count is number && // if the incoming count is a number
request.resource.data.count <= 12 && // this field cannot exceed 12
然而,我最担心的是这个计数器被设置为在相关子集合中创建文档的保护器,并且继续发送 0 或 1 真的很容易没有真正检查传入数据是否仅(增量 +1)添加到文档中计数的当前状态...是否有任何其他检查我可以实施以使其坚如磐石,我尝试仅使用(resource.data)再次检查当前状态但由于此检查是一部分一张更大的支票,它被链接起来,所以它失败了..
【问题讨论】:
-
您可以检查传入值(
request.resource.data.count)是否为确切地比现有值 (resource.data.count) 多 1。有关更多信息,请参阅链接的答案。即request.resource.data.count == resource.data.count + 1; -
@Dharmaraj 问题是该集合无法从一开始就退出 ..... 所以没有办法查看 src .. 有什么想法吗?
标签: google-cloud-firestore firebase-security