2016-06-21 4 views
1

Приложение My Swift iOS использует только анонимный вход Firebase. Меня беспокоит безопасность моей базы данных Firebase, поскольку, по-видимому, любой может получить доступ или удалить мои данные (через браузер и т. Д.).Swift: Firebase: Как обеспечить, чтобы никто не мог получить доступ к моему db, кроме моего приложения.

Как я могу защитить свой db, так что только мое приложение iOS может получить к нему доступ?

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

+2

Если ваше приложение напрямую разговаривает с db, тогда было бы тривиально, чтобы кто-то мог захватить/проанализировать эти сообщения и полностью обойти ваше приложение и напрямую поговорить с db. вам в основном необходимо реализовать веб-сервис, который выполняет сопряжение. так что это будет app <-> webservice <-> db, а не any_who_wants_to <-> db –

+0

действительно очень легко получить доступ к чьей-либо firebase db, если они не обеспечили ее. Все, что вам нужно, это URL-адрес приложения firebase, который, как правило, легко угадать. а затем u может выдавать команды чтения записи непосредственно на него. – Kashif

ответ

1

You need to write security rules.

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

Эти правила действуют как аннотации в вашей структуре данных и указывают, какие ограничения должны быть выполнены, чтобы позволить чтение или запись.

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

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

auth переменного значение на сторону сервера, который хранит текущий аутентифицированный пользователь. Правило проверяет, имеет ли эта переменная значение и, следовательно, содержит зарегистрированного пользователя.

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

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

+0

Как я конкретно писал в своем вопросе, у меня нет пользовательских логинов, поэтому безопасность пользователей не является вариантом. – Kashif

+1

Ваше приложение использует анонимный логин, эти люди - пользователи с 'uid', который работает для этих правил. Вы можете использовать эти правила для чего-либо, созданного клиентом с помощью uid, это не должно быть узлом '' users ''. –

+0

Я вижу, как я могу изменить код, чтобы любой uid имел доступ ко всем данным? – Kashif