_netrc / .netrc替代cURL

时间:2011-03-04 12:23:47

标签: git http authentication curl .netrc

我一直在看Git和cURL,我发现了一些关于.netrc的引用,这可能有助于HTTP身份验证。问题是:.netrc是愚蠢的,因为它以纯文本格式存储密码,这对于我正在开发的解决方案来说是一个安全问题。

是否有替代.netrc方法?是否可以为cURL开发“身份验证后端”?

1 个答案:

答案 0 :(得分:6)

更新April 2013, git 1.8.3

  

已添加 new read-only credential helper (在contrib/中)与.netrc/.authinfo文件进行互动。

该脚本允许您使用gpg加密的netrc文件,避免将您的凭据存储在纯文本文件中。

  

启用此凭据帮助程序:

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

(请注意,Git会将“git-credential-”添加到帮助程序名称并查找它   在路上。)

请参阅“Is there a way to skip password typing when using https:// github

的完整示例

原始答案(2011年3月)

唯一的选择(除了不使用它并通过ssh)将是:

  • 加密该文件(例如,在Windows上,使用实用程序“ crypt ”)
  • 在curl call
  • 之前解密它
  • 然后在卷曲调用之后再次加密

请注意,在Unix上,该文件通常处于模式600,只有您可以看到 在Windows(_netrc)上,该文件应位于HOMEDIR中,该文件不应(通过Windows ACL)访问任何其他用户。
但我仍然不喜欢纯文字密码......

例如,

This thread经历了相同的过程(在Unix上用于gpg,但它仍然很好地说明了解决方案):

  

下面我已经包含了一个实现'gpg'用法的示例脚本,可以用来加密文件的内容。它是shell脚本,但我相信你可以将这个概念改编为你的perl脚本。

     

我认为根据您的需要,基本想法是:

     
      
  1. 使用您的密码(和其他信息)创建纯文本文件
  2.   
  3. 使用gpg对其进行加密并存储加密文件;处理纯文本文件
  4.   
  5. 在perl脚本中,将加密文件解密为纯文本文件
  6.   
  7. 在脚本运行期间读取纯文本文件的内容
  8.   
  9. 尽快删除纯文本文件。
  10.         

    这里只是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