我编写的软件处理各种敏感信息,例如电子邮件地址、密码和信用卡号码。
当我们遇到内存问题时,最好让应用程序写入堆转储。但问题是,如果某个线程正在该区域工作,则堆转储可能包含明文的敏感信息... 我们不希望在我们在其他地方进行加密的情况下将其写入磁盘。
有没有方法来处理这种情况,例如导致JVM编写加密的转储?
我编写的软件处理各种敏感信息,例如电子邮件地址、密码和信用卡号码。
当我们遇到内存问题时,最好让应用程序写入堆转储。但问题是,如果某个线程正在该区域工作,则堆转储可能包含明文的敏感信息... 我们不希望在我们在其他地方进行加密的情况下将其写入磁盘。
有没有方法来处理这种情况,例如导致JVM编写加密的转储?
简短的回答是不完全。在某些时候,您必须将数据明文使用,并且在垃圾收集的虚拟机中,您无法控制对象何时从内存中物理删除。唯一真正的策略是尽快删除所有对未加密机密数据的引用,以最大程度地减少风险。这并不能保证没有机密数据会被写入内存转储,但如果有人能够这样做,那么他们已经可以获得关键信息。