Подтвердить что ты не робот

Вход в систему - как безопасно хранить учетные данные на стороне клиента?

Поскольку многие API-интерфейсы предоставляют доступ удаленно к своим данным через комбинацию пользователя/пароля, Мне было интересно, какой лучший способ сохранить эти ценности, очень безопасный способ (даже если 100% невозможно), чтобы напрямую связать их, не спрашивая каждый раз для них.

4b9b3361

Ответ 1

Я рекомендую один из трех подходов:

  • Избегайте сохранения пароля вообще с помощью токенов аутентификации. В этой модели пользователь регистрируется за один раз, а сервер генерирует уникальный, большой разреженный токен, который клиент может хранить и использовать в качестве пароля для входа в систему. Сервер принимает этот токен только от одного клиента за раз, поэтому, если два клиента пытаются использовать его одновременно, токен недействителен. Токен также обычно недействителен по истечении определенного периода времени (1 неделя, 2 недели, год, что подходит). Когда токен недействителен, пользователь должен снова войти в систему вручную, и процесс повторяется. Это в основном подход Gmail и аналогичных веб-сайтов.

  • Если вы должны сохранить пароль, я рекомендую использовать ОС для управления им для вас. Windows и Mac имеют хорошие защищенные системы хранения (DPAPI и Keychain соответственно). Однако у Linux нет хорошего всегда доступного решения, так что это зависит от вашего рынка. Преимущество использования ОС в том, что ОС может обеспечить защиту, которую вы не можете легко обеспечить себе, и пользователь может централизованно управлять общей защитой хранилища ОС (с помощью смарт-карт и т.д.) До уровня, который вряд ли будет воспроизводиться. Безопасные хранилища ОС также обычно удобны для пользователя.

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

Ответ 2

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

Ответ 3

KeePass предоставляет даже API для использования для разработчиков.