Java堆转储中的敏感数据

Roy*_*yce 5 java encryption passwords heap

我编写的软件处理各种敏感信息,如电子邮件地址,密码和信用卡号.

当我们遇到内存问题时,让应用程序编写堆转储会很好.问题是如果一个线程恰好在该区域中工作,那么堆转储可能包含纯文本的敏感信息...当我们在其他地方加密它时,我们真的不希望写入磁盘.

是否有处理此问题的方法,例如导致JVM写入加密转储?

小智 2

简短的回答并不完全。在某些时候,您必须拥有清晰的数据才能使用它,而在垃圾收集的虚拟机中,您无法控制对象何时从内存中物理删除。最大限度降低风险的唯一真正策略是尽快删除对未加密机密数据的所有引用。它不能保证不会将机密数据写入内存转储中,但如果有人可以做到这一点,那么他们已经可以获得关键信息。

  • 但请确保在取消引用内存区域之前先对其进行核攻击!(因此,切勿将密码存储在“String”对象中,而是使用“char[]”。) (4认同)