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