Как сохранить пароль для будущих вызовов CLI - PullRequest
0 голосов
/ 15 апреля 2019

Я пишу CLI с использованием python, который в значительной степени оборачивается API для веб-сайта. Для API есть аутентификация, поэтому мне нужно спросить у пользователя его имя пользователя и пароль. Я не уверен, как хранить их в системе, не сохраняя их в открытом виде. Есть ли лучшая практика для чего-то подобного?

Например, пользователь может позвонить из командной строки:

python some_cli.py

И это запросит у них имя пользователя и пароль, если они еще не сохранены. Я думал о попытке сохранить их с помощью os.putenv или os.environ, но это не будет сохранено, так как этот процесс умрет, и они не будут сохранены для будущих процессов. Единственное, о чем я могу думать, - это иметь файл, в котором эта информация будет сохранена и прочитана.

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Используйте учетные данные, которые вводит пользователь, для входа в веб-API, который вы переносите.API должен возвращать токен или сеанс, как если бы вы использовали его в браузере.Сохраните этот токен или сеанс где-нибудь в вашей программе CLI как переменную или сохраните в файле.Это нужно будет оставить открытым текстом.Каждый экземпляр CLI может использовать этот файл для выполнения запросов к API при запуске.Вам также нужно будет обрабатывать сеансы / токены с истекшим сроком действия, запрашивая у пользователя свои учетные данные для повторной аутентификации.

0 голосов
/ 15 апреля 2019

Как правило, пароли засоляются и хэшируются перед их сохранением на жестком диске системы.Мне кажется, что вы пишете сценарий хранения пароля на стороне клиента.Поэтому я бы порекомендовал алгоритмы хеширования SHA-2 или bcrypt, чтобы сделать ваши пароли неразборчивыми перед их сохранением.Не используйте MD5 или SHA-1 для хэширования ваших паролей, поскольку они имеют известные уязвимости.

При сравнении предоставленного пользователем пароля и реального пароля они не сравниваются в открытом тексте.Пользовательский пароль сначала засоляется, затем хэшируется.Полученный хэш сравнивается с хешем «правильного» пароля, который хранится на диске.При использовании этого метода открытый текстовый пароль никогда не сохраняется на диске.Кроме того, поскольку вероятность совпадения двух хэшей чрезвычайно низка, это считается более безопасной практикой, чем хранение незашифрованных паролей (намного, гораздо более безопасная практика, поскольку хеши очень трудно перевернуть, даже если злоумышленник знает хэш).

В этом потоке есть несколько интересных реализаций соления и хэширования, включая реализацию bcrypt. Солт и хеширование пароля в python

A учебник безопасного хранения паролей может помочь вам в вашем путешествии.

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

Я бы порекомендовал вам присоединиться к Криптографическому форуму Stack Exchange

...