在删除(或超出范围)之前覆盖存储在变量中的敏感数据是否是一种良好的安全编程实践?我的想法是,由于数据剩余,它可以防止黑客能够读取 RAM 中的任何潜在数据。多次覆盖它会增加安全性吗?这是我正在谈论的一个小例子,用 C++ 编写(包括注释)。
void doSecret()
{
// The secret you want to protect (probably best not to have it hardcoded like this)
int mySecret = 12345;
// Do whatever you do with the number
...
// **Clear out the memory of mySecret by writing over it**
mySecret = 111111;
mySecret = 0;
// Maybe repeat a few times in a loop
}
一种想法是,如果这确实增加了安全性,那么如果编译器自动添加执行此操作的指令(可能是默认情况下,或者可能通过在删除变量时告诉编译器执行此操作),那就太好了。
该问题被列为本周信息安全问题。
阅读 2014 年 12 月 12 日的博客文章了解更多详情或提交您自己的本周问题。