Меня немного смущает, почему галочка помечает нижеприведенное общедоступное свойство Password как среднюю уязвимость типа Heap Inspection.
Есть идеи, почему галочка помечает эту строку как уязвимость? Любые рекомендации/идеи по улучшению кода ниже?
SecureString password;
public String Password
{
get { return SecureStringToString(password); }
set
{
if (value != null)
{
password = new SecureString();
foreach (char c in value) password.AppendChar(c);
}
}
}
String SecureStringToString(SecureString value)
{
IntPtr valuePtr = IntPtr.Zero;
try
{
valuePtr = Marshal.SecureStringToGlobalAllocUnicode(value);
return Marshal.PtrToStringUni(valuePtr);
}
finally
{
Marshal.ZeroFreeGlobalAllocUnicode(valuePtr);
}
}
SecureString
превращается вString
, это совершенно, совершенно бесполезно. Узнайте, как работаетSecureString
, если хотите узнать подробности - person Camilo Terevinto   schedule 02.02.2018SecureString
. CheckMarx совершенно прав, говоря вам, что вы делаете неправильно. - person Camilo Terevinto   schedule 02.02.2018Marshal.PtrToStringUni
? Как вы думаете, что происходит с (раньше) безопасным текстом пароля, когда вы вызываете эту функцию? - person NetMage   schedule 02.02.2018