我想加密和解密我的連接字符串。以下是用於加密的代碼。當我的代碼經歷了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 –