首页 > 解决方案 > 如何在 Windows 和 Linux 上正确存储 .NET Core 非交互式应用程序凭据?

问题描述

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

我知道,DPAPI 就是为它而生的,但是如何在像 Ubuntu 这样的 Linux 上使用它呢?所以——如果我可以让 DPAPI 在 Linux 上工作而不用花一整天的时间——这将是我的第一选择。

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

告诉我为什么文件不好?;)

标签: c#linuxsecurity.net-coredpapi

解决方案


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

嗯嗯。

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

不是“使用代码”,而是代码中:即作为字符串文字烘焙到您的可执行文件中。

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

是的。

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

有困难。

所以——如果我可以让 DPAPI 在 Linux 上工作而不用花一整天的时间——这将是我的第一选择。

你不能。DPAPI是一个 Windows应用程序。

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

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

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

值得商榷。

告诉我为什么文件不好?;)

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


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


推荐阅读