gpt4 book ai didi

c# - 将字符串从数据库转换为 SecureString

转载 作者:太空宇宙 更新时间:2023-11-03 15:10:07 25 4
gpt4 key购买 nike

当从数据库传输到本地 SecureString 变量时,如何限制(内存)存储在数据库中的未加密字符串的暴露?

字符串从数据库到达之后,但在转换之前,是否与将其移动到字符串变量然后进行转换一样容易受到攻击?还有其他方法可以解决这个问题吗?

这是从 MSSQL 数据库获取数据的代码,数据存储为未加密的 varchar:

SecureString str = ((string)command.Parameters["@ssn"].Value).ConvertToSecureString();

ConvertToSecureString() 是这个扩展方法:

public static SecureString ConvertToSecureString(this string str)
{
var secureStr = new SecureString();
if (str.Length > 0)
{
foreach (var c in str.ToCharArray()) secureStr.AppendChar(c);
}
secureStr.MakeReadOnly();
return secureStr;
}

我正在努力避免将数据暴露给某些内存分析病毒/黑客/转储等。例如Walmart memory hack并尽可能确保整体安全。

最佳答案

如果字符串未加密存储在数据库中,无论如何它们都容易被盗。

如果使用 DataReader 在内存中读取它们,它们也会在内存中未加密,即使在您循环读取读取器时只有一小段时间。

我的建议是,如果字符串非常敏感,将它们加密存储在数据库中,使用 DataReader 将加密的字符串读入 SecureString,然后在必要时对其进行解密;这不会在内存中公开它们。

关于c# - 将字符串从数据库转换为 SecureString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41589739/

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