Git凭据管理器如果显示令牌,那么它是如何保证安全性的?

7

我设置了credential.helper=manager-core,这是用于Windows凭据管理器的新凭据助手。但我不理解如果你可以使用git credential fill获取git显示你的凭据,它是如何安全的。

复现步骤

  1. 执行命令git config --system --list以确认凭据助手。如果您运行的是Git for Windows 2.29或更高版本,则应能够在列表中看到credential.helper=manager-core。对于早期版本,credential.helper设置为manager而不是manager-core。我正在运行最新的Git For Windows 2.29.2,因此对于我返回manager-core
  2. 接下来,如果您的凭据已由助手存储,则下面的命令应将凭据返回到stdout:
git credential fill
protocol=https
host=github.com`
<HIT ENTER KEY TWICE, as A blank line signals input completion>
  1. 现在你的授权信息将显示在控制台上。它能够基于你最初配置git时使用的密码/令牌来显示密码/令牌。在我的情况下,我使用 GitHub 个人访问令牌进行了身份验证,因此它显示了该令牌。
1个回答

8
你可能已经注意到,如果按照Git的方式调用"git credential fill"命令,它会输出Git用于验证你身份的凭据。这很有用,因为Git需要某种方式来获取它们,同时你也可以通过提取这些凭据来生成API调用所需的令牌。
这种方法是安全的,因为如果你已经正确配置了适当的凭据管理器,数据将以加密格式存储,并且只有在你登录或以其他方式解锁它时才能解密。在Windows上的工作方式取决于你如何配置Git凭证管理器核心,但我在Linux上使用的"libsecret"助手将数据加密存储在我的系统钥匙串中,该钥匙串在我登录时解锁,在我未登录时不可用。
请注意,许多情况下,你可以使用凭据存储库使用的其他API提取类似的数据,例如(在Linux上)"secret-tool"等,因此,你可以使用任何其他API将其打印到终端或使用你系统上通常使用的查看器查看它,这与使用"git credential fill"命令打印它无异。

感谢您的回复。之所以安全,是因为如果您已经正确配置了适当的凭据管理器,数据将以加密格式存储。在这个问题上,我想指出我看到了另一个选项,即credential.https://dev.azure.com.usehttppath=true。这是您在陈述中提到的配置吗? - Asif Kamran Malick
2
外部脚本或包/模块(如npm)能否读取凭据管理器存储的凭据?如果某些恶意的npm模块尝试通过运行“git credential fill”来获取我的凭据怎么办?根据官方文档,git将此暴露给脚本。这再次让我回到了最初的担忧,即凭据存储机制是否安全。也许我错过了什么。但我想学习。 - Asif Kamran Malick
2
“usehttppath”选项只需要在输入中指定路径即可。其行为与其他选项相同。是的,其他恶意程序在您的帐户上运行时也可以读取它,但无论是否使用此功能都可以这样做。作为您的用户运行的恶意程序已经可以访问您的所有信息。 - bk2204

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