【发布时间】:2013-05-11 07:23:34
【问题描述】:
如何限制用户保存超过某个限制的字符串?
如果尝试使用字符串的 length 属性在安全规则中进行验证,我将得到 无效的属性访问:目标不是对象。
【问题讨论】:
标签: firebase firebase-security
如何限制用户保存超过某个限制的字符串?
如果尝试使用字符串的 length 属性在安全规则中进行验证,我将得到 无效的属性访问:目标不是对象。
【问题讨论】:
标签: firebase firebase-security
Firebase 安全规则现在支持字符串的 length 属性,以及其他几种字符串方法,包括 replace()、contains()、toUpperCase()、toLowerCase() 等。
更多信息请参见https://firebase.google.com/docs/reference/security/database/#string_properties。
【讨论】:
The syntax you can use in rules are detailed here.
很遗憾,目前无法执行字符串操作(匹配、长度等)。 请参阅下面 ROB 的回答,此功能现已可用
我知道这至少在 Firebase 雷达上,因为我前段时间要求提供类似功能。
如果您解释了您要解决的问题的确切细节,则可以得到更具体的答案;现在我会给你一些一般性的想法。
使用特权应用
使用特权应用程序监控 Firebase,每当将值写入您需要进行字符串验证的特定字段时,手动检查并在无效时将其删除。
当然,客户端验证会处理所有有效的用例。所以这只是为了防止恶意插入。
或者,您可以将其更多地视为审核。只需将任何无效字符串通过电子邮件发送到某个地址以进行审查。由于客户端将在插入之前确保字符串有效,因此您再次只是查看错误或恶意行为。
将写入委托给 API
与其让客户端写入特权数据,不如将其发送到 API 并让 API 写入该数据——使其只读给客户端。
别担心
您真的需要验证长度吗?简单地看看它是否是一个字符串就足够了吗?有人会“破解”字符串的内容真的令人担忧吗?可能不是。可能是,但可能不是。
如果这是一个问题,是否可以通过其他途径解决?如果涉及到服务器,只需使用上述流程即可。
【讨论】: