我一直在看Git和cURL,我发现了一些关于.netrc的引用,这可能有助于HTTP身份验证。问题是:.netrc是愚蠢的,因为它以纯文本格式存储密码,这对于我正在开发的解决方案来说是一个大安全问题。
是否有替代.netrc方法?是否可以为cURL开发“身份验证后端”?
答案 0 :(得分:6)
已添加 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)将是:
crypt
”)请注意,在Unix上,该文件通常处于模式600,只有您可以看到
在Windows(_netrc
)上,该文件应位于HOMEDIR
中,该文件不应(通过Windows ACL)访问任何其他用户。
但我仍然不喜欢纯文字密码......
This thread经历了相同的过程(在Unix上用于gpg,但它仍然很好地说明了解决方案):
下面我已经包含了一个实现'
gpg
'用法的示例脚本,可以用来加密文件的内容。它是shell脚本,但我相信你可以将这个概念改编为你的perl脚本。我认为根据您的需要,基本想法是:
- 使用您的密码(和其他信息)创建纯文本文件
- 使用
gpg
对其进行加密并存储加密文件;处理纯文本文件- 在perl脚本中,将加密文件解密为纯文本文件
- 在脚本运行期间读取纯文本文件的内容
- 尽快删除纯文本文件。
醇>这里只是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