如何在 Windows 和 Linux 上正确存储 .NET Core 非交互式应用程序凭据?

问题描述

我需要为我的应用存储凭据。我读过用代码存储它们是一种非常糟糕的做法。

我知道,DPAPI 就是为它而生的,但是如何在像 Ubuntu 这样的 Linux 上使用它? 所以 - 如果我可以让 DPAPI 在 Linux 上运行而无需花费一整天的时间 - 这将是我的第一选择。

然后是穷人的安全 - 目标机器上的文件。所以 - 与源无关 ;) 该文件位于只有管理员可以访问的目录中,因此它与主机本身一样安全。我也可以在我的 Windows 开发机器上拥有该文件,它和我的机器一样安全。

告诉我为什么文件是坏的? ;)

解决方法

我需要为我的应用存储凭据。

嗯嗯。

我读过将它们与代码一起存储是一种非常糟糕的做法。

不是“with code”,而是in代码:即作为字符串文字嵌入到您的可执行文件中。

我知道,DPAPI 就是为此而生的

是的。

但是如何在像 Ubuntu 这样的 Linux 上使用它?

有困难。

所以 - 如果我可以让 DPAPI 在 Linux 上运行而无需花费一整天的时间 - 这将是我的第一选择。

你不能。 DPAPI 是一个 Windows thang

然后是穷人的安全 - 目标机器上的文件。所以 - 不是来源

至少在 Linux 上,您可以利用简单得多的文件系统安全模型来保护文件不被其他用户访问而无需太多努力(即 chmod,与您使用的 Windows 相比)需要处理 DACL(警告:DACL 在客观上仍然远远优于 chmod。考虑使用 SELinux 在 Windows 之外获取 DACL)。

该文件位于只有管理员可以访问的目录中,因此它与主机本身一样安全。

有争议。

告诉我为什么文件是坏的? ;)

我不能。你没有告诉我们关于文件的任何


更好的解决方案:利用任何可用的硬件 TPM 来存储加密密钥:https://wiki.archlinux.org/index.php/Trusted_Platform_Module