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