Как не жестко закодировать пароли? - PullRequest
9 голосов
/ 17 февраля 2009

В моем последнем вопросе «Переносимая база данных для хранения секретов» лучший ответ до сих пор Скажите использовать sqlite-crypt.

Чтение документов sqlite-crypt, новый параметр для открытия базы данных - это пароль. Конечно, я не хочу жестко кодировать пароль, поэтому я подумал, какой самый лучший, простой и быстрый способ сохранить этот пароль?

Ответы [ 4 ]

11 голосов
/ 17 февраля 2009

Некоторые опции.

  1. Попросите пользователя ввести пароль (он же запоминает один пароль, чтобы получить все свои пароли) (хорошая идея)

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

  3. Используйте смесь из вышеперечисленного, иначе говоря, дайте пользователям варианты одного или двух (помните мой флажок пароля)

3 голосов
/ 17 февраля 2009

У вас все хорошо есть , чтобы сохранить его у пользователя.

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


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

2 голосов
/ 17 февраля 2009

В Windows вы можете / должны использовать DPAPI , API защиты данных , который обеспечивает шифрование хранилища.
Это как раз для такого типа проблемы.

Шифрование хранилища основано на:

  • учетная запись пользователя, поэтому только авторизованный пользователь может получить доступ к данным. Это позволяет передавать данные на другой ПК с теми же учетными данными пользователя.
  • машина, что делает данные доступными только на этой конкретной машине и не может быть перенесено на другой ПК.

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

Есть, конечно, много других статей на эту тему.

2 голосов
/ 17 февраля 2009

Жесткое кодирование неизбежно в какой-то момент, если только пароль не используется только в интерактивном режиме.

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

...