Очевидно, что мы не хотим жестко кодировать пароль в виде простого текста в каждом скрипте. Это затруднило бы повторение пароля, так как необходимо было бы изменить тонну сценариев, в дополнение к тому, что пароль был в незашифрованном виде.
Если сценарии принимают пароль в качестве параметра, нам нужно беспокоиться об изменении вывода 'ps', чтобы он не отображал значение аргумента пароля. Нам также придется беспокоиться о том, что команда будет записана в истории оболочки. Это потенциально может быть обработано с помощью HISTIGNORE / HISTCONTROL на bash, но есть другие используемые оболочки с отличающимся и менее гибким управлением историей (например, zsh).
Мы также могли бы использовать переменную среды, специфичную для командной строки (FOO = bar ./script), и хотя «FOO = bar» не будет отображаться в «ps», по-прежнему она по умолчанию записывается в историю оболочки. Кроме того, некоторые системы в любом случае предоставляют доступ к процессам других пользователей (через «ps»).
Можно использовать файл пароля (конфигурации), который просто хранит пароль в виде открытого текста. Этот файл может принадлежать / разрешаться таким образом, чтобы ограничить его доступ. Но, в конце концов, у вас все еще есть пароль в текстовом виде.
Подсказка также является опцией, но она, как правило, менее удобна (все еще возможна через, например, ожидаемо) и усложняет неинтерактивность, если сценарий требует этого.
Можно использовать шифрование некоторого аромата, но тогда у нас все еще есть аналогичная проблема, с которой нужно разобраться с ключом дешифрования.
Должен ли я в любом случае пойти с одним из вышеперечисленных? Есть ли другие варианты, которые могут быть лучше? Как люди справляются с этой ситуацией безопасным образом?
Общая цель здесь состоит в том, чтобы злоумышленник не смог составить сервер базы данных, если злоумышленник каким-либо образом попадет в систему, которая использует сервер базы данных. Например, атака не должна быть в состоянии просто найти пароль, лежащий где-то поблизости, не должна быть в состоянии наблюдать систему ('ps'), чтобы обнаружить его, и не должна быть в состоянии "оглянуться назад во времени" (история оболочки), чтобы найти его.
Я прекрасно осознаю, что существуют миллионы сценариев (kmem, меняющиеся страницы и т. Д. И т. Д.), И что большинство ставок не принимаются, если злоумышленник получает root или физический доступ, и что ничего не будет 100 % безопасно. Я просто действительно ищу лучший подход в пределах разумного . : -)