_netrc/.netrc альтернатива cURL

Я смотрел на Git и cURL, и я нашел несколько ссылок на .netrc, которые могут помочь в http auth. Проблема заключается в следующем:.netrc тупой, потому что он хранит пароли в текстовом формате, что является проблемой безопасности большой для решения, которое я разрабатываю.

Есть ли альтернатива подходу .netrc? Можно ли создать "аутентификационный сервер" для cURL?

Ответ 1

Обновить Апрель 2013, git 1.8.3:

A новый помощник учетных данных только для чтенияcontrib/) для взаимодействия с .netrc/.authinfo файлы добавлены.

Что script позволит вам использовать gpg-зашифрованные файлы netrc, избегая проблемы с вашими учетными данными, хранящимися в текстовом файле.

Чтобы включить этот вспомогательный помощник:

git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'

(Обратите внимание, что git будет добавлять "git-credential-" к имени помощника и искать его в пути.)

Посмотрите полный пример в Есть ли способ пропустить ввод пароля при использовании https:// github"


Оригинальный ответ (март 2011 г.)

Единственная альтернатива (кроме использования ее и перехода через ssh) заключается в следующем:

  • зашифровать этот файл (например, в Windows с помощью утилиты crypt ')
  • расшифровать его непосредственно перед вызовом curl
  • затем зашифруйте его снова сразу после вызова curl

Обратите внимание, что в Unix этот файл обычно находится в режиме 600, только видимый вами.
В Windows (_netrc) этот файл должен находиться в вашем HOMEDIR, который не должен быть доступен (через Windows ACL) для других пользователей.
Но мне все еще не нравится пароль в виде обычного текста...

Этот поток, например, проходит один и тот же процесс (в Unix для gpg, но он по-прежнему хорошо иллюстрирует решение):

Ниже я включил образец script, реализующий использование 'gpg', который можно использовать для шифрования содержимого файла. Это в оболочке script, однако я уверен, что вы можете адаптировать концепцию к вашему perl script.

Я думаю, что для ваших нужд основная идея:

  • создать текстовый файл с вашим паролем (и другой информацией)
  • зашифровать его с помощью gpg и сохранить зашифрованный файл; удалите текстовый файл
  • В perl script расшифруйте зашифрованный файл в текстовом файле
  • читать содержимое текстового файла во время выполнения вашего script
  • как можно скорее удалите текстовый файл.

Вот только пример работы gpg:

#!/bin/sh
echo -n "Enter your password: "
read pass

FILE=~/mypassword
echo $pass > $FILE
gpg -c $FILE
rm -f $FILE

gpg $FILE.gpg
MYPASSWORD=`cat $FILE`
rm -f $FILE

echo $MYPASSWORD