Безопасное хранение маркера доступа в Кордове


Править: смотрите мой ответ для решения

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

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

Я смотрел на angular-localForage и другие кандидаты:


LocalStorage

    Очевидный выбор для небольших данных.
  • данные стираются в iOS, когда системе не хватает памяти.

IndexedDB

WebSQL (SQLite)

  • видимо хороший вариант для небольших данных и достойной поддержки (WebSQL Support ) но это уже устарело.

SQLite

  • есть связанные вопросы с Cordova в iOS.

Локийс

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

PouchDB + SQLite

  • Ну, это JS-клиент для работы с базами данных CouchDB или Couchbase, которые также могут работать с SQLite, но опять же мне нужно только хранить жетон..

Таким образом, по-видимому, лучшим вариантом для кросс-совместимости Android / iOS должен быть WebSQL, но он больше не разрабатывается, и я должен гарантировать долгосрочную поддержку.

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

3 3

3 ответа:

После проведения некоторых исследований я поделюсь своим выводом.

Забавно, но ни один из вышеперечисленных кандидатов не подходит длябезопасного хранения маркера доступа. Подход должен использовать собственное решение как для Android (общие предпочтения), так и для iOS (Keychain ).

В частном случае Ionic, плагинbroadcaster для Cordova может использоваться для связи JS с Native, чтобы вы могли получить доступ к сохраненным данным.

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

Перейдите на LocalStorage, это лучший способ хранения