接続文字列を暗号化および復号化しようとしています。以下は暗号化に使用されるコードです。コードを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;
}
我々はSecureString
にStringBuilder
を変換することができますか解決策になることができますどのような場合は私に知らせてください。
は、後で文字列ビルダで、その後されたバイト配列内のデータを有し、 *既に*メモリにデータがあり、公開されています。あなたのプログラムが実際にマシンのメモリを検査している人(私が実際にここで最初に起こることは確かではない)に対して安全である必要があるなら、それはすでにその時点では遅すぎます。 – Servy
文字列を安全にする方法をお探しですか?私は文字列の作成者が終わりにそれと多く関係しているとは思わない。 セキュリティで保護された文字列が必要な場合は、それを渡している可能性が高いですが、文字列ビルダーは文字列を作成するためにのみ使用されています。 –
関連:https://stackoverflow.com/a/25190648/2440262 –