Как защитить учетную запись Firebase и т. д. от действий пользователя?

Я разрабатываю хобби-проект, используя Firebase и некоторые Node.JS, работающие на Google App Engine в качестве бэкэнда. Я настоящий новичок в этой области, а также только месяц назад услышал о Firebase.

Мой вопрос касается того, как различные «вещи» могут быть защищены от действий пользователя, даже если Firebase работает как JS на стороне клиента.

Я знаю, что БД и Хранилище могут быть защищены с помощью логических правил - это на месте.

Мой вопрос скорее касается действий, которые пользователь может выполнять с помощью firebase.auth() и подобных, например:

  • firebase.auth().createUserWithEmailAndPassword()
  • firebase.auth().currentUser.delete()
  • firebase.auth().currentUser.link()

Как я понял из вопроса, указанного ниже, решения нет - пользователь всегда сможет вызывать эти функции, и это считается малорисковым, поскольку они не могут касаться других учетных записей пользователей. "запретить пользователю firebase удалять себя"

Меня беспокоит невозможность заблокировать пользователей от этих действий, потому что я не могу внести соответствующие изменения в БД. Для некоторых основных случаев использования я предполагаю, что легко настроить ночное пакетное задание для очистки, но я боюсь, что в будущем возникнут более сложные проблемы.

Мое текущее решение для выполнения атомарных действий, например. удалить учетную запись пользователя и удалить данные пользователя в БД, это отправить запрос на мой внутренний сервер Node.JS. Это отлично работает, но пользователь может, как я понимаю, обойти это и запросить, например. currentUser.delete() сам. Другой случай — когда пользователь отвязывает аккаунт Google. Я хотел бы, чтобы пользователь вышел из системы, но с предпосылками пользователь может отменить связь с последующим действием.

Вопрос: я что-то неправильно понял? Можно ли это легко предотвратить, или это так, что все доступные действия считаются безвредными, и я должен выполнить умную очистку и т. д.? Если это невозможно предотвратить, есть ли у вас какие-либо более умные предложения, чем ночные пакетные задания?


person Sam Henriksson    schedule 02.05.2017    source источник


Ответы (1)


С помощью облачных функций для firebase вы можете, например, активировать функцию при удалении пользователя. Таким образом, каждый раз, когда пользователь удаляется, вы можете запускать свой код для очистки. Независимо от того, как вызывается удаление пользователя.

exports.removeUserFromDatabase = functions.auth.user().onDelete(function(event) {
    // Get the uid of the deleted user.
    var uid = event.data.uid;

    // Remove the user from your Realtime Database's /users node.
    return admin.database().ref("/users/" + uid).remove();
});

То же самое касается «onCreate». Ознакомьтесь с их документацией https://firebase.google.com/docs/auth/extend-with-functions

person Clinton    schedule 03.05.2017