Как удалить открытую безопасную строку из памяти - PullRequest
0 голосов
/ 04 февраля 2020

В настоящее время у меня есть проблема в проекте, где защищенная строка отображается следующим образом:

IntPtr unmanagedString = IntPtr.Zero;
try
{
        unmanagedString = Marshal.SecureStringToGlobalAllocUnicode(secureString);
        string str = Marshal.PtrToStringUni(unmanagedString);
        ...
        ...
}
finally
{
        Marshal.ZeroFreeGlobalAllocUnicode(ptr);
}

После вызова Marshal.SecureStringToGlobalAllocUnicode(secureString) копия содержимого защищенной строки сохраняется в неуправляемой памяти. Даже после того, как Marshal.ZeroFreeGlobalAllocUnicode(ptr) вызванная строка может быть легко найдена с помощью инструментов памяти, просто ищите все строки.

Есть ли способ полностью удалить ее или, по крайней мере, go вокруг нее, например, переписать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...