最安全的方法:onChange 与 https 云函数
Safest approach: onChange vs https cloud functions
我想知道,我必须允许用户只更改文档的某些部分,我想出了两个不同的解决方案:
- 答:使用 Firestore 规则锁定文档并修改我对使用 https 功能感兴趣的部分(检查请求是否来自文档所有者)
- B:只允许文档的所有者进行更改(使用 firestore 规则)并触发 onChange 云函数来检查 he/she 是否只更改了他们允许的内容。如果不拒绝更改
我想知道是否有任何更安全的方法或两者都以相同的方式有效。欺骗 https 功能有多容易?
在许多情况下两种方法都有效并且取决于偏好。
来自更 传统 client/server 环境的人通常更喜欢 Cloud Function。这还允许您执行规则中不可能执行的某些操作,例如,您可以使用完整的服务器凭据执行任何操作。
对于 Firebase 来说,规则可能更惯用,而且可能更便宜、更快。也就是说,非常仔细地制定任何规则非常重要。您可以参考 documentation,这在这种情况下可能是相关的。
这里的建议是使用规则来防止不需要的更改,而不是允许所有者进行任何更改,然后在触发器中撤消它们。如果你想实现规则中无法完成的逻辑,你可以考虑允许所有者将更改写入某种临时区域,可以是同一文档中的单独字段,或新的待定文档,然后执行检查并将数据移动到其触发器中的正确位置。
我想知道,我必须允许用户只更改文档的某些部分,我想出了两个不同的解决方案:
- 答:使用 Firestore 规则锁定文档并修改我对使用 https 功能感兴趣的部分(检查请求是否来自文档所有者)
- B:只允许文档的所有者进行更改(使用 firestore 规则)并触发 onChange 云函数来检查 he/she 是否只更改了他们允许的内容。如果不拒绝更改
我想知道是否有任何更安全的方法或两者都以相同的方式有效。欺骗 https 功能有多容易?
在许多情况下两种方法都有效并且取决于偏好。
来自更 传统 client/server 环境的人通常更喜欢 Cloud Function。这还允许您执行规则中不可能执行的某些操作,例如,您可以使用完整的服务器凭据执行任何操作。
对于 Firebase 来说,规则可能更惯用,而且可能更便宜、更快。也就是说,非常仔细地制定任何规则非常重要。您可以参考 documentation,这在这种情况下可能是相关的。
这里的建议是使用规则来防止不需要的更改,而不是允许所有者进行任何更改,然后在触发器中撤消它们。如果你想实现规则中无法完成的逻辑,你可以考虑允许所有者将更改写入某种临时区域,可以是同一文档中的单独字段,或新的待定文档,然后执行检查并将数据移动到其触发器中的正确位置。