Могу ли я зашифровать комбинацию имени пользователя и пароля перед использованием с cURL?

6098
Greg Guida

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

3

2 ответа на вопрос

3
grawity

Нет.

Ну, технически вы можете передать необработанный Authorizationзаголовок используя --header. Но полезность этого была бы точно равна нулю . Base64 - это всего лишь кодировка, используемая для предотвращения повреждения двоичных данных, но она ничего не скрывает - ее можно изменить в base64любой момент, например, с помощью команды, любой, кто читает ваш скрипт.

Другими словами, даже если вы сделаете это, пароль все равно будет в текстовом формате.

Спасибо за разъяснение, но есть ли у вас какие-либо предложения о том, как я мог бы 1) не вводить pw каждый раз и 2) не сохранять его в виде обычного текста или base64? Greg Guida 12 лет назад 0
Прочитайте его из внешнего файла и сохраните этот файл в зашифрованной файловой системе. Например, curl имеет опцию `--netrc` для чтения из ~ / .netrc, или вы можете использовать возможности оболочки для чтения из любого места. (eCryptFS позволяет очень легко настроить зашифрованный каталог `~ / Private /`.) В качестве альтернативы, если вы используете GNOME или KDE или Windows или Mac OS X, в них можно использовать функцию «keyring». grawity 12 лет назад 0
2
RedGrittyBrick

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

Возможно, вам придется перепрыгнуть через некоторые обручи, чтобы использовать setuid, что означает, что пользователи, которые могут читать и выполнять сценарий, не могут прочитать файл паролей. Unix.stackexchange имеет хороший ответ на эту тему. В вашем случае не повышайте эффективный UID до root, просто используйте обычный ID, созданный только для этой цели (например, скрипт запускается как wally, wally владеет password.txt (r --------) wally не имеет специальных привилиги, но те, которые нужны для записи логов или выходных файлов, чтобы поделиться с другими)

Похожие вопросы