Как предотвратить доступ к базе данных Firebase из консоли Chrome или другими способами - PullRequest
0 голосов
/ 16 июня 2019

Так что у меня есть приложение только для одной страницы.Прямо сейчас у меня есть что-то вроде

// db.js
import firebase from "firebase/app"
import "firebase/firestore";

var firebaseConfig = {
...
};


export const db = firebase
  .initializeApp(firebaseConfig)
  .firestore();

в main.js. Я экспериментировал с размещением экземпляра db в области видимости глобального окна, просто чтобы посмотреть, смогу ли я перейти на веб-консоль Chrome и получить доступ к ней для отправки.документ, и действительно, я могу

// main.js
import { db } from './db'
window.db = db;

, а затем из консоли Chrome

db.collection("test").add({'somekey': 'Can I add this doc?'})

Как мне запретить кому-либо делать это, не имея реального бэкэнда для проверки аутентификации?Мне нравится реактивность vue + firebase.Если я не выставлю переменную db глобальной области, этого достаточно?Я читал этот пост:

https://forum.vuejs.org/t/how-to-access-vue-from-chrome-console/3606/2

, потому что любая переменная, которую вы создаете в вашем файле main.js, по-прежнему не будет глобально доступна из-за того, как webpack

1 Ответ

1 голос
/ 16 июня 2019

Одной из замечательных особенностей Firestore является то, что вы можете получить к нему доступ прямо со своей веб-страницы. Это означает, что на этой веб-странице вы должны располагать всеми данными конфигурации, чтобы найти соответствующие серверы Google и найти проект Firebase на этих серверах. В вашем примере эти данные являются частью firebaseConfig.

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

Способ управления доступом к базе данных - использование правил безопасности на стороне сервера Firebase . Так как они применяются на сервере, их невозможно обойти ни вашим кодом, ни кодом, который пишет злоумышленник.

Вы можете использовать эти правила безопасности, чтобы убедиться, что все данные действительны, например, убедиться, что все обязательные поля есть и что нет данных, которые ваше приложение не использует.

Но общий подход заключается также в том, чтобы гарантировать, что весь доступ к данным авторизован. Для этого требуется, чтобы ваши пользователи проходили аутентификацию Firebase Authentication . Вы можете либо потребовать от своих пользователей войти в систему с их учетными данными, либо вы можете анонимно подписать их в . В последнем случае им не нужно вводить какие-либо учетные данные, но вы все равно можете убедиться, например, что каждый пользователь может записывать данные только в свою область данных и что он может только читать свои собственные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...