_netrc/.netrc替代cURL的方法

9

我一直在研究Git和cURL,发现了一些关于.netrc的参考资料,可能有助于HTTP身份验证。问题是:.netrc很愚蠢,因为它以明文格式存储密码,这对我正在开发的解决方案来说是一个巨大的安全问题。

有没有替代的方法来代替.netrc?是否可以开发一个"cURL认证后端"?

1个回答

7

更新 2013年4月,git 1.8.3:

添加了一个新的只读凭证助手(在contrib/中),用于与.netrc/.authinfo文件交互。

该脚本可以让您使用加密的gpg netrc文件,避免将您的凭证存储在明文文件中的问题。

要启用此凭证助手:

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

请注意,Git会在辅助工具名称前面添加“git-credential-”并在路径中查找它。
**请参阅完整示例:“是否有一种方法可以在使用https://github时跳过输入密码”**

原始答案(2011年3月)
除非不使用它并通过ssh进行操作,否则唯一的选择是:
  • 加密该文件(例如,在Windows上使用实用程序“crypt”)
  • 在curl调用之前解密它
  • 然后在curl调用之后再次加密它
请注意,在Unix上,该文件通常处于600模式下,仅由您可见。
在Windows上(_netrc),该文件应位于您的HOMEDIR中,其他用户无法通过Windows ACL访问它。
但我仍然不喜欢明文密码...
例如,此线程在Unix上为gpg执行相同的过程,但仍很好地说明了解决方案:
以下是实现使用“gpg”加密文件内容的示例脚本。它是shell脚本,但我相信您可以将该概念适应于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

@Herberth:除非您通过一个curl脚本替换curl可执行文件(在解密之后和重新加密之前调用实际的curl可执行文件),否则无法直接实现。 - VonC
哦,我认为这是不可能的... git不使用系统命令调用curl,而是使用libcurl。提前感谢;) - Herberth Amaral

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接