gpt4 book ai didi

c# - 在这种情况下使用 SecureString 会提高安全性吗?

转载 作者:行者123 更新时间:2023-11-30 18:22:41 25 4
gpt4 key购买 nike

我的自定义 .Net 进程使用与当前上下文不同的帐户映射驱动器。密码存储在配置文件中,使用机器 key 加密的 DPAPI。

代码有效,但我想知道使用 SecureString 是否会提供额外的安全性。我认为以下弱点在于 PlainBytes 数组以及 MapPwd 和 MapDriveCmd 字符串,当它们以纯文本形式存在于内存中时。

我对 SecureString 做了一些研究,但不太明白它是否适用于此。以下代码后未使用三个局部可疑变量。如果我在没有 SecureString 的情况下保持原样,车库收集器会在流程结束前处理这些吗?

byte[] CipherBytes = Convert.FromBase64String(ConfigurationManager.AppSettings.Get("MapPwd").Trim());
byte[] PlainBytes = ProtectedData.Unprotect(CipherBytes, null, DataProtectionScope.LocalMachine);
string MapPwd = System.Text.Encoding.UTF8.GetString(PlainBytes);

string MapDriveCmd = "/C net use " + MapLetter + " " + MapPath + " " + MapPwd + " /USER:" + MapUser + " /PERSISTENT:NO";
System.Diagnostics.Process MapDrive = System.Diagnostics.Process.Start("CMD.exe", MapDriveCmd);
MapDrive.WaitForExit();

欢迎对一般技术提出任何补充意见。谢谢。

最佳答案

在您的情况下,使用 SecureString 不会非常有益。

SecureString 的目的是提供一种在不再需要时对数据进行垃圾回收的方式,这样数据就不会滞留在 RAM 中。如果数据被保留下来,有人可以使用调试器(或其他类似方法)来检查进程分配并可能获得结果。

DPAPI 根本就不是很安全。这还不错……但它是一种可逆算法。使用单向散列算法要好得多。但是,在此用例中您不能这样做。由于您使用的是 DPAPI,PC 的任何其他用户都可能能够读取您的配置文件。如果他们可以读取配置文件,并且由于您使用的是机器 key ,则只需调用 ProtectedData.Unprotect()

即可轻松解密您的密码

为了更安全,不要使用密码。如果可能,请向 AD 机器帐户或托管服务帐户授予权限。

关于c# - 在这种情况下使用 SecureString 会提高安全性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33700982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com