3

Моя firebase структура любит:Как установить правила безопасности для предотвращения удаления данных в firebase?

"ROOT": { 
    "Group": { 
    "User": { 
     "Name": "", 
     "Email": "", 
     "Gender": "", 
     "Mobile": "", 
     "Time": "" 
    } 
    } 
} 

Мой вопрос, как я могу предотвратить пользователя от работы ref.remove() непосредственно из клиентского браузера инспектора, который удалит все данные без запроса?

Я хочу, чтобы клиент скрипт для запуска firebase операции, такие как

  1. добавления/обновления данных в/ROOT /, я имею в виду, добавив еще дочерний узел «Группа», как группа_2, Group3 ..., но не может удалить этот узел.
  2. и добавить данные под/ROOT/Group /, а также обновление и удаление

Как установить правила безопасности? Благодарю.

+0

@Shilly, не имеет значения, если ref находится в области браузера. Любой может создать refb firebase и удалить вызов. Вы также можете просто отправить запрос удаления HTTP в root. Вы должны иметь безопасность на стороне сервера. –

+0

Хорошо, спасибо за объяснение. (post-delete :)) – Shilly

ответ

6

Отъезд Bolt!

Болт - это инструмент проверки схемы для Firebase.

Таким образом, вы можете определить вашу схему Group и User, а затем написать правила, чтобы убедиться, что никто, кто не авторизован, удалит его.

type User { 
Name: String; 
Email: String; 
Gender: String; 
Mobile: String; 
Time: Number; 
} 

path /group/$groupid { 
    read() = true; 
    write() = this != null; // don't delete existing data 
} 

path /group/$groupid/user/$uid is User { 
    read() = true; 
    write() = this != null; // don't delete existing data 
} 

Теперь вам просто нужно создать правила безопасности из командной строки, или загрузить их с помощью Firebase CLI. Пока у Болта нет поддержки на приборной панели. Вы также можете скопировать и вставить сгенерированные правила в панель инструментов, если это необходимо.

+0

WOW, большое вам спасибо, Дэвид, я это рассмотрю. – POPOEVER

+0

Пожалуйста, отметьте ответ правильно, если он работает на вас. Если не сообщите мне, что случилось. Хорошо держать оставшуюся без ответа очередь. –

+0

Кажется, что Болт не поддерживается в firebase 3 – ZuzEL

3

Некоторые другие функции полезны Bolt вы можете использовать:

path /create { write() { create(this) } }                                   
path /update { write() { update(this) } }                                   
path /delete { write() { delete(this) } }                                   
path /create-or-update { write() { create(this) || update(this) }}                             

create(ref) { prior(ref) == null }                                     
update(ref) { prior(ref) != null && ref != null }                                 
delete(ref) { prior(ref) != null && ref == null } 

См this sample file и это tests.

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