转储内存显示用户和密码信息

Posted

技术标签:

【中文标题】转储内存显示用户和密码信息【英文标题】:Dump memory show user and password info 【发布时间】:2019-02-22 10:14:23 【问题描述】:

我一直在检查内存中转储数据的内存信息,并且我看到了用于登录服务器的请求的 JSON 结构。

出于安全原因,信息不应保存在内存中,因此我必须找出存储这些数据的内容。

我尝试检查 OKHttp3 以避免缓存任何信息,但似乎它可能是 GSON 转换器。

这条线 https://github.com/square/retrofit/issues/2305 来自一个抱怨 Strings hold in memory 的人。

我想知道将 GSON 视为问题是否正确,以及是否有机会让 GSON 知道我不想缓存具体类。

谢谢

【问题讨论】:

【参考方案1】:

我认为问题出在这里:

在字符串池中添加字符串有两种方法。 首先,如果您像下面这样声明您的字符串文字,该字符串将添加到池中。

String test = "test"

第二个如果你在字符串对象中调用实习生方法。像这样。

String test = new String("test"); 
test.intern();

所以如果你这样声明你的用户名和密码:

String username = new String("YOUR_PASSWORD");

除非您调用实习生方法,否则它不会添加到池中。 所以尝试上述方式或使用 StringBuilder 类。垃圾收集发生在您的数据上。

【讨论】:

有什么方法可以在不使用垃圾收集器的情况下处理对象? 您可以使用第二种方法,当您的工作完成敏感数据时,将它们的引用设置为 null。所以他们将有资格获得 GC,请注意,您不能强制 JVM 进行 GC,您可以建议这样做。

以上是关于转储内存显示用户和密码信息的主要内容,如果未能解决你的问题,请参考以下文章

卡在“转储内存,应用程序将冻结。Brrr。”信息

如何创建内存转储和分析内存泄漏?

如何获得 Windows 错误报告 (WER) 以保存内存转储以进行挂起?

JVM --------jmap-----查看堆内存信息生成heap dump 文件(转储堆内存快照到指定文件)

gdb 搜索核心转储内存

捕获系统堆转储数据关闭