_netrc/.netrc 替代 cURL

发布于 2024-10-20 10:41:28 字数 181 浏览 1 评论 0原文

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

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

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无人问我粥可暖 2024-10-27 10:41:28

更新 2013 年 4 月,git 1.8.3

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

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

要启用此凭据助手:

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

(请注意,Git 会将“git-credential-”添加到助手名称前面并查找它
在路径中。)

**请参阅“使用 https:// 时跳过密码输入的方​​法github**"


原始答案(2011 年 3 月)

唯一的替代方案(除了不使用它并通过 ssh)是:

  • 加密该文件(例如,在 Windows 上,使用实用程序 '< strong>crypt')
  • 在curl调用之前解密它
  • 然后在curl 调用之后再次加密它

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

此线程<例如, /a> 经历相同的过程(在 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

Update April 2013, git 1.8.3:

A new read-only credential helper (in contrib/) to interact with the .netrc/.authinfo files has been added.

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

To enable this credential helper:

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

(Note that Git will prepend "git-credential-" to the helper name and look for it
in the path.)

**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):

Below I have included a sample script implementing the usage of 'gpg', which can be used to encrypt the contents of a file. It's in shell script, however I'm sure you can adapt the concept to your perl script.

I think for your needs the basic idea is:

  1. create a plain-text file with your password (and other info)
    2. encrypt it using gpg and store the encrypted file; dispose of the plain-text file
    3. Within the perl script, decrypt the encrypted file into a plain-text file
    4. read contents of plain-text file during runtime of your script
    5. delete plain-text file as soon as possible.

Here's just an example of the workings of 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文