Как предотвратить удаление узла с помощью правил базы данных Firebase?

У меня есть база данных firebase только с 3 основными узлами. Это приложение для чата, и ниже приведена структура

chat_messages
    - chatID
        -messageID
            -message (string)
            -read (bool)
            -senderName (string)
            -senderProfilePic (string)
            -sent_by (string)(uid)
            -timestamp (string)
 
chat_room
    -chatID
        -chat_mode (string)
        -last_message (string)
        -timestamp (string)
        -members
            -uid (string)
                -email (string)
                -name (string)
                -photo (string)
                -uid (string)
                -userID (int)
                -userRole (string)

user_chatrooms
    -uid
        -chatID( string) : timestamp (string)

Я установил базовую безопасность, разрешив read и write на true, и я получил электронное письмо от firebase, в котором говорится, что в моей базе данных есть insecure rules

Затем я перенастроил правила базы данных следующим образом.

{
  "rules": {
    "chat_messages":
    {
      ".read": "auth != null",
        ".write": "auth != null",
    },
    "chat_room":
    {
      ".read": "auth != null",
        ".write": "auth != null",
    },
    "user_chatrooms":
    {
      ".read": "auth != null",
        ".write": "auth != null",
    }
    
  }
}

Это обеспечивает дополнительную защиту, блокируя доступ к чему-либо еще за пределами упомянутых узлов.

теперь, как я могу предотвратить удаление этих узлов?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы предотвратить удаление узла, вы можете проверить, предоставляются ли новые данные в операциях записи:

".write": "auth !== null && newData.exist()"

Спасибо. Я проверю. Когда мы это сделаем, перестану ли я получать письма с "незащищенной базой данных"? Кроме того, не могли бы вы объяснить, что происходит в вашем коде? Для меня это выглядит так, как будто вы проверяете, вошел ли пользователь в систему и предоставляет ли пользователь какие-либо данные во время вызова, в основном проверяя, не являются ли данные в предоставленном вызове нулевым

PeakGen 26.12.2020 17:12

Если все, о чем вы заботитесь, это остановить электронные письма, вы можете отключить их, щелкнув значок колокольчика в правом верхнем углу консоли Firebase, а затем в настройках в правом верхнем углу (рядом с «Оповещениями»). Но я считаю, что лучше прислушиваться к этим предупреждениям, поскольку они обычно означают, что ваша база данных открыта для злоупотреблений, за которые вы несете ответственность.

Frank van Puffelen 26.12.2020 17:14

Нет, я тоже заинтересован в защите данных, возможно, я неправильно задал свой вопрос, я хотел проверить, соответствует ли моя база данных минимальным стандартам «защищенной базы данных» firebase. Итак, я правильно понимаю ваш код?

PeakGen 26.12.2020 17:17

Вы спросили «как я могу предотвратить удаление этих узлов?», и я ответил здесь. Применили ли вы это изменение к своим правилам и позволило ли это предотвратить удаление?

Frank van Puffelen 26.12.2020 18:10

Привет, @PeakGen Есть новости по этому поводу? У вас была возможность проверить, предотвращает ли это правило удаление узлов, как вы просили?

Frank van Puffelen 29.12.2020 01:52

Очень сожалеем о задержке и спасибо, что заглянули. Да, это сработало. Спасибо 😊

PeakGen 29.12.2020 09:42

Другие вопросы по теме