firebase规则验证newData中的所有值(未知密钥验证)

时间:2017-04-23 15:25:29

标签: firebase firebase-realtime-database firebase-security

有没有办法编写firebase规则来验证“newData”对象中的所有值?

在我的应用程序中,我对“newData”对象中任何键的值都非常灵活(我的键是不可预测的,用户可以设置自己的键和值)但是,我真的不在乎用户给我的价值每个键,但我想将数据长度限制为,即时,100个字符。

所以我要验证“newData”中任何键的所有值是否在firebase数据库安全规则中限制为100个字符。

我申请的当前阶段:   这是我的应用程序如何工作..     基本上,我的应用程序有一个个人资料页用户可以在现有字段中输入值。用户还可以添加自己的自定义字段并保存。所有这些都将变成字符串。添加它并不重要他们添加了多少个自定义字段。我只需要限制字符串的长度。

如果这是做灵活类型的键值类型应用程序的不好方法,请建议我其他方法。

这是用户newData:     {       名称:“abc”,       年龄:“30”,       xxx:“yyy”     } xxx可以是任何内容(xxx是可选的,用户可以创建其他客户字段,例如aaa,bbb或ccc。)

以下是JSON安全性:

{
  "rules": {
  ".read": false,
  ".write": false,
  "user": {
    "$uid": {
      ".read": true,
      ".write": "auth.uid === $uid"
  }
}

感谢。

1 个答案:

答案 0 :(得分:1)

使用通配符来验证Frank van Puffelen所述的具有未知密钥的所有数据

https://firebase.google.com/docs/database/security/securing-data#using_variables_to_capture_path_segments

" $ unknownKey":{" .validate":" $ unknownKey.length< 100}

{
  "rules": {
  ".read": false,
  ".write": false,
  "user": {
    "$uid": {
      ".read": true,
      ".write": "auth.uid === $uid",
      "$unknownKey": { ".validate": "$unknownKey.length < 100"}
    }
  }
}