我正在使用这样的Windows 凭据存储:
PCREDENTIAL cred = nullptr;
if (CredRead(entryName, 1, 0, &cred) != TRUE || !cred)
return -1;
// ... code which handles cred.UserName and cred.CredentialBlob
CredFree(cred);
如您所见,我根据需要释放缓冲区。但是,我看到 LPBYTE 指针CredentialBlob
仍然有效,并且仍然包含内存中的密码。我必须SecureZeroMemory
手动操作吗?谁拥有缓冲区?我发现没有其他源代码可以做到这一点......
我没有找到任何东西,https: //msdn.microsoft.com/library/aa919793.aspx 仅包含以下通用语句:
使用后从内存中清除凭证数据
使用后不要将凭证留在内存中。使用后通过调用 SecureZeroMemory 清除临时存储中的所有凭证数据。