本文介绍了_netrc/.netrc 替代 cURL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

解决方案

更新 2013 年 4 月,git 1.8.3:

A 新添加了只读凭证助手(在 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/shecho -n "输入您的密码:"阅读通行证文件=~/我的密码回声 $pass >$文件gpg -c $文件rm -f $文件gpg $FILE.gpgMYPASSWORD=`猫$文件`rm -f $文件回声 $MYPASSWORD

I've been looking at Git and cURL and I found some references about .netrc, that may help on HTTP authentication. The problem is: .netrc is dumb, because it stores passwords in plain text format, which is a big security issue for the solution I'm developing.

Is there an alternative to the .netrc approach? Is it possible to develop an "authentication backend" to cURL?

解决方案

Update April 2013, git 1.8.3:

That script would allow you to use gpg-encrypted netrc files, avoiding the issue of having your credentials stored in a plain text file.

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

**See a full example at "Is there a way to skip password typing when using https:// github**"


Original answer (March 2011)

The only alternative (except not using it and going through ssh) would be to:

  • encrypt that file (for instance, on Windows, with the utility 'crypt')
  • decrypt it just before the curl call
  • then encrypt it again right after the curl call

Note that on Unix, that file is normally in mode 600, only visible by you.
On Windows (_netrc), that file should be in your HOMEDIR, which shouldn't be accessible (through Windows ACL) to any other users.
But I still don't like a password in plain text...

This thread, for example, goes through the same process (on Unix for gpg, but it still illustrates the solution nicely):

#!/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

这篇关于_netrc/.netrc 替代 cURL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-28 04:14