想象一下 Java 应用程序中有一个登录表单。我们需要将用户名和密码分配给变量。之后我们可以散列或 HMAC 密码并将其保留仅用于身份验证步骤(无缓存)。但是我们仍然需要为原始密码分配变量。
Q1)我们应该使用什么样的变量类型来存储原始密码(字符串、字符数组或其他)?
Q2)原始密码变量使用后我们应该怎么做(即只允许垃圾收集器在函数超出范围后转储它)?
Q3)还有什么吗?
这是一个与 Java 相关的问题。我把它贴在这里,因为它非常接近安全性。
对于 C/C++,我几乎没有什么想法。他们是
将密码存储在不依赖于其他库的低系统级变量中。即在 char [] 中存储密码,这比框架提供的 QString (Qt) 类型变量非常原生。
使用后立即覆盖密码 char[]。然后摧毁它。
尽量减少密码在内存中的时间。