2015-09-04 2 views
0

Есть ли способ разрешать (но не требовать) ключи в объекте Firebase? Я знаю, что вы можете использовать .validate, чтобы гарантировать, что у объекта есть определенные ключи. Возможно ли только разрешить определенные ключи, в белом списке? Если нет, похоже, что это отличный способ для нежелательных/ненужных данных, чтобы попасть в базу данных от вредоносных клиентов.Ограничение разрешенных ключей в Firebase

ответ

4

Вы можете использовать Firebase $ переменные, чтобы запретить всех не указанных детей. Из Firebase guide on securing your data, приходит этот пример:

{ 
    "rules": { 
    "widget": { 
     // a widget can have a title or color attribute 
     "title": { ".validate": true }, 
     "color": { ".validate": true }, 
     // but no other child paths are allowed 
     // in this case, $other means any key excluding "title" and "color" 
     "$other": { ".validate": false } 
    } 
    } 
} 

Так widget узла может иметь color и/или title недвижимости. Но если у него есть другие свойства, он будет отклонен.

Так они все действуют в соответствии с этими правилами безопасности:

ref.child('widget').set({ title: 'all is blue' }); 
ref.child('widget').set({ color: 'blue' }); 
ref.child('widget').set({ title: 'all is blue', color: 'blue' }); 

Но они являются недействительными в соответствии с правилами выше:

ref.child('widget').set({ titel: 'all is blue' }); 
ref.child('widget').set({ title: 'all is blue', description: 'more...' }); 
+0

Отлично! Спасибо! –

Смежные вопросы