如何存储敏感数据(例如:密码)std::string
?
我有一个应用程序,提示用户输入密码,并在连接设置期间将其传递给下游服务器.我想在建立连接后安全地清除密码值.
如果我将密码存储为char *
数组,我可以使用SecureZeroMemory等 API 来清除进程内存中的敏感数据.但是,我想在代码中避免使用char数组,并且正在寻找类似的东西std::string
?
所以我真的很感兴趣它是否能够在GCC和clang采用的激进优化策略中存活下来.
考虑以下示例:
void* clean(void* pointer, std::size_t size) noexcept
{
return new(pointer) char[size]{};
}
void doStuff()
{
//...
clean(pointer, size);
//...
}
Run Code Online (Sandbox Code Playgroud)
我可以相信清理敏感数据的任务吗?