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

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

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

1 ответ

Решение

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

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

Этот сценарий позволит вам использовать файлы netrc, зашифрованные в формате gpg, что позволит избежать сохранения ваших учетных данных в текстовом файле.

Чтобы включить этот помощник учетных данных:

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, но он по-прежнему хорошо иллюстрирует решение):

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

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

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

Вот только пример работы 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
Другие вопросы по тегам