2015-10-17 2 views
1

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

Просмотр документации PouchDB и поиск в Интернете Я пришел к пониманию того, что ограничение доступа к локальному PouchDB отсутствует. Любой, кто имеет доступ к клиенту/браузеру, имеет в принципе доступ к кэшированным данным. Кроме того, внедрение любого вида контроля доступа пользователей в моем веб-приложении кажется бессмысленным. Код можно просто изменить, чтобы разрешить доступ.

я пришел к следующему возможному решению и хотел бы знать, если это может работать:

  1. Первый контакт с центральным сервером App отправляет учетные данные пользователя на сервер. Сервер шифрует специальный ключ базы данных с учетными данными пользователя и отправляет этот файл encryptedDatabaseKey обратно в клиентское приложение. Клиентское приложение хранит этот encryptedDatabaseKey в localStorage, расшифровывает содержащуюся базу данныхKey, создает и шифрует локальный PouchDB, используя этот файл базы данных (например, крипто-пакет).
    1. В автономном режиме Пользователь регистрируется в приложении, его учетные данные используются для дешифрования зашифрованногоDatabaseKey в localStorage, только тогда он имеет доступ к сохраненным данным. Если кто-то изменяет код приложения, он все равно не может получить доступ к зашифрованному PouchDB.

Я вижу следующие преимущества: - Без правильных учетных данных нет доступа к локальным данным - Несколько пользователей могут иметь доступ к той же локальной PouchDB так databaseKey одинакова. - База данных может быть изменена регулярно (приложение сравнивает во время подключения к серверу локальный зашифрованный файл базы данных и тот, который получен от сервера, если они отличаются, приложение расшифровывает базу данных с помощью старого ключа и шифрует ее с помощью нового)

Это похоже на жизнеспособное решение? Существуют ли какие-либо другие/лучшие методы защиты локального PouchDB?

ответ

0

crypto-pouch действительно лучший способ шифрования локального PouchDB. Тем не менее, я думаю, где вы говорите

Оффлайн журналы Использование пользователей в приложение, его учетные данные используются для расшифровки encryptedDatabaseKey в LocalStorage, только тогда же он доступ к хранимым данным

Я думаю, что это бессмысленно расшифровывать ключ и использовать его для дешифрования базы данных; вы могли бы так же, как пользователь создавать и запоминать пароль? Затем вы можете использовать это как ключ к crypto-pouch.

+0

Спасибо за ваш ответ. Приложение будет развернуто на международном уровне с очень низким уровнем квалификации и высокими колебаниями. Я сомневаюсь, что второй ключевой подход будет работать ... Кроме того, организация имеет тенденцию использовать «общих» пользователей. Таким образом, у каждого пользователя, сидящего перед ним, есть одна учетная запись пользователя на компьютере, и в идеале они совместно используют одну и ту же базу данных. – TylerDurden

Смежные вопросы