Шифрование и хранение пароля - Perl - PullRequest
0 голосов
/ 18 января 2012

У нас есть несколько скриптов, которые используют пароль для входа в систему.Эти пароли хранятся в ini-файле и используются сценариями (Perl).

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

Но логически не имеет смысла хранить зашифрованный пароль и логику дешифрования в коде.

Эти файлы находятся под контролем исходного кода и могут быть доступны большинству пользователей.

Интересно, что может быть лучше.

Я использую Perl, и любые предложения относительно того, какой модуль я мог бы использовать, приветствуются: -)

Спасибо

Картик

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

Ответы [ 2 ]

4 голосов
/ 18 января 2012

Это, по сути, имеет мало общего с Perl. В основном вы будете работать с оболочкой и файловой системой.

Если вам нужен пароль для доступа к удаленному сервису, вы должны сохранить его. Независимо от того, зашифрованы они или нет, они должны быть где-то размещены, возможно, на диске, особенно если они не запускаются из пользовательского сеанса (например, GNOME).

Хранить пароли в общедоступных VCS - очень плохая идея. Вы должны хранить там только свой код и хранить пароли в отдельном файле, вне директорий VCS. Например, если у вас есть копия репо в /opt/some-project/scripts, поместите рядом с ней файл пароля в /opt/some-project/passwd.

Самая важная проблема - права доступа к файлу passwd. Сделайте его доступным только для владельца, лучшим из которых является root.

Затем запустите такой скрипт в crontab вашего корня:

cat /opt/some-project/passwd | sudo -U <user> perl /opt/some-project/run-with-passwd-on-stdin

где <user> - это пользователь (не root!), От которого вы хотите запустить свой скрипт, и скрипт получит файл паролей в качестве стандартного ввода.

Таким образом, файл паролей защищен, если права доступа к файлам верны, а учетная запись root не взломана.

2 голосов
/ 18 января 2012

Я думаю, что вы вообще не должны расшифровывать пароли.Вы должны хранить md5 сумму пароля, затем, когда пользователь захочет войти, вы вычисляете сумму md5 того, что он ввел в качестве пароля, и сравниваете ее с тем, что у вас есть в ваших файлах.

Конечно, естьдругие методы, чем MD5, это только пример.Вы можете использовать SHA или любой другой способ одностороннего хэширования.

Используя этот метод, вы не сможете восстановить забытый пароль, вам нужно сгенерировать новый, чтобы заменить забытый.

Я нене знаю Perl, но держу пари, что есть доступные реализации md5 или SHA1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...