Безопасное хранение учетных данных удаленной базы данных в приложении iPhone - PullRequest
0 голосов
/ 07 января 2012

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

Я использую Cloudant для хранения этой информации (CouchDB великолепен) и предоставил привилегии только для чтения новому пользователю (создан ключ API / pass). Чтобы общаться с Cloudant, вам, очевидно, нужен URL для доступа к нему (например, https://user:pass@db.cloudant.com),, который хранится в приложении в виде строки.

Теперь, хотя я знаю, что это довольно небезопасно, я не могу придумать какие-либо другие альтернативы для обеспечения безопасности URL-адреса БД (в частности, имени пользователя / пароля для него). Я видел, как люди говорили об использовании другого сервера для прокси для получения учетных данных, но это выглядит немного неловко.

Любая помощь или мысли будут очень признательны!

Ответы [ 2 ]

1 голос
/ 07 января 2012

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

В этой модели служба сохраняет учетные данные для доступа к хранилищу, и вы реализуете пользовательскую безопасность на уровне приложений.Я также не думал бы об этом как о прокси-слое - это означает, что это тонкий проход.Если вы разрабатываете сервис, вы должны определить веб-интерфейс (отдых, мыло), который не зависит от хранилища.В этом случае это сервис, а не прокси.

РЕДАКТИРОВАТЬ:

Обычно веб-сервис аутентифицирует пользователя (не пишите свой).Обычная аутентификация с использованием SSL является типичной.Затем в этом API контекста служб вы получаете доступ к имени пользователя.Оттуда вы делаете то, что вам нужно.Доступ к вашему хранилищу осуществляется с помощью одной учетной записи хранения, которая имеет полный доступ ко всему контенту.

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

1 голос
/ 07 января 2012

Пытаетесь ли вы установить соединение из приложения для iPhone непосредственно с базой данных?Вы не должны предоставлять вашему приложению доступ для чтения ко всей таблице / базе данных удаленных пользователей.Рано или поздно кто-то узнает об этом и получит доступ к вашим данным.Независимо от того, как вы пытаетесь его запутать, комбинация пользователь / пароль должна быть каким-то образом сохранена в вашем приложении.

Что вам нужно сделать, это создать веб-сервис, который подключается к вашей БД и проверяет ваших пользователей.Пароль базы данных остается на сервере.Этот прокси-подход не является неловким, это единственный способ держать ваши базы данных подальше от ваших пользователей.

...