我想加密和解密我的连接字符串。以下是用于加密的代码。当我的代码经历了SSA Fortify
,我得到如下错误。将StringBuilder转换为安全字符串
xyz.cs以不安全的方式存储敏感数据,使得 可能通过检查堆来提取数据。
public static int GetSaltSize(byte[] pBytes)
{
var key = new Rfc2898DeriveBytes(pBytes, pBytes, 1000);
byte[] ba = key.GetBytes(2);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < ba.Length; i++)
{
sb.Append(Convert.ToInt32(ba[i]).ToString());
}
int saltSize = 0;
string s = sb.ToString(); // <--- insecure?
foreach (char c in s)
{
int intc = Convert.ToInt32(c.ToString());
saltSize = saltSize + intc;
}
return saltSize;
}
请让我知道,如果我们可以转换到StringBuilder
或SecureString
什么都可以解决。
具有一个字节数组的数据,然后在后面的字符串生成器,是*已经*有内存中的数据和暴露。如果您的程序实际上需要对检查机器内存的人员进行安全保护(我并不确定这将首先出现在这里),那么在这一点上已经太迟了。 – Servy
你正在寻找一种方法来使字符串安全吗?我不认为字符串建造者在一天结束时与它有很大关系。 如果你想要一个安全的字符串,可能是因为你传递了它,但一个字符串生成器只用于构建字符串,而不是你会传递的权利? –
相关:https://stackoverflow.com/a/25190648/2440262 –