2016-12-08 3 views
0

Я построил простую целевую страницу с помощью Angular и предлагаю посетителям, которые могут быть заинтересованы в услуге для отправки своих данных через стандартную регистрацию форма. Данные хранятся в базе данных firebase.Угловая + Firebase: как лучше всего защитить вашу базу данных на целевой странице (не требуется аутентификация)

Что бы рекомендуемый подход, чтобы лучше защитить мою базу данных, зная, что:

  • мой firebase URL является публичным (в настоящее время находится в JavaScript)
  • страница является общедоступной (так что каждый может «написать» в базе данных)

до сих пор я добавил следующие правила для моей firebase консоли:

{ 
rules: { 
    ".read": "auth != null", // nobody can read 
    visitors: { 
     ".write": "!data.exists()", // nobody can modify existing data 
     "firstname": {".validate": "newData.isString() && newData.val().length < 40"}, // only string with less than 40 characters 
     "lastname": {".validate": "newData.isString() && newData.val().length < 40"}, // only string with less than 40 characters 
     "email": {}, // no rules 
     "message": {".validate": "newData.isString() && newData.val().length < 500"} // only string with less than 500 characters 
    } 
} 
} 

Вопрос 1: Правильны ли эти правила для защиты моей базы данных или я должен рассмотреть возможность добавления дополнительных?

Вопрос 2: Должен ли я сокрывать свой URL-адрес Firebase на серверном сервере? Моей идеей было бы поместить URL-адрес firebase в php-файл на сервере; Чтобы обновить базу данных новыми данными о посетителях, приложение сначала сделает вызов ajax на моем сервере через службу $ http, вернет URL-адрес firebase, а затем обновит базу данных firebase. В этом случае URL-адрес firebase больше не будет публичным.

Как вы думаете? Большое спасибо

ответ

0
  1. Эти правила validate the format of the data, которые могут быть написаны. Они никоим образом не limit who can write this data. Являются ли эти правила проверки достаточными для ваших требований безопасности, только вы можете сказать.

  2. Некоторые разработчики переносят API базы данных Firebase со своим собственным сервером. Но большинство разработчиков обнажить базу данных непосредственно пользователям своего приложения, а затем положить их на стороне сервера логики за базе данных, как описано в this page и диаграммы:

Integrating App Engine Flex behind the Firebase Database

Те разработчики, как правило, в конечном с более строгими правилами безопасности, чем сейчас.

+0

Фрэнк, спасибо, что разъяснил пару пунктов. Относительно 1) предоставленная ссылка очень полезна, и я буду соответствующим образом обновлять некоторые из правил. –

+0

Что касается 2), я понимаю из вашего комментария, что предложение получить ключ api с сервера не является подходом, который имел бы смысл. Правильно? Кроме того, я не понимаю вашего комментария, если обернуть API базы данных Firebase на моем сервере/поставить свою логику на стороне сервера за базой данных - это путь или проверка правильности формата данных достаточно для целевой страницы. –

+0

Я сказал вам, что большинство разработчиков, с которыми я общаюсь, делают. Никто, кроме вас, не может решить, достаточно ли для вашего приложения достаточно. –