Как не жестко закодировать пароли?
На мой последний вопрос "Переносимая база данных для хранения секретов" лучший ответ до сих пор советует использовать sqlite-crypt.
Чтение документов sqlite-crypt, новый параметр для открытия базы данных - это пароль. Конечно, я не хочу жестко кодировать пароль, поэтому я подумал, какой самый лучший, простой и быстрый способ сохранить этот пароль?
4 ответа
Некоторые варианты.
Попросите пользователя ввести пароль (он же запоминает один пароль, чтобы получить все свои пароли) (хорошая идея)
Создайте ключ при первом запуске приложения, который затем хэшируется по-своему (плохая идея)
Используйте комбинацию из вышеперечисленного, иначе говоря, дайте пользователям варианты одного или двух (помните мой флажок пароля)
Вы довольно хорошо должны хранить это в пользователе.
В противном случае вы просто заменяете какой-то другой механизм безопасности на тот, о котором вы спрашиваете...
Пункт Дэвида в комментарии к ответу Infamy хорошо принят. Нужно допустить некоторую гибкость, в случае, если пользователь обрабатывает защиту на более низком уровне... Итак, голосуйте за Бесчестье.
В Windows вы можете / должны использовать DPAPI, API защиты данных, который обеспечивает шифрование хранилища.
Это только для этого типа проблемы.
Шифрование хранилища основано на:
- учетная запись пользователя, поэтому только зарегистрированный пользователь может получить доступ к данным. Это позволяет передавать данные на другой компьютер с теми же учетными данными пользователя.
- машина, делая данные доступными только на этой конкретной конфигурации машины и не передаваемые на другой ПК.
Есть шоу dnrTV с Карлом Франклином, показывающее, что именно нужно для реализации этой и других функций шифрования.
Исходный код шоу также доступен на странице.
Есть, конечно, много других статей на эту тему.
Жесткое кодирование неизбежно в какой-то момент, если только пароль не используется только в интерактивном режиме.
Лучшее, что вы можете сделать в ситуации с паролем в файле, это сделать его чертовски сложным, прежде всего, и ограничить то, что можно сделать с ним, если кто-то его найдет. Практическое правило заключается в том, что вы не должны предоставлять больше привилегий паролю, хранящемуся в строке, чем тот, который вы должны ввести в командной строке.