【发布时间】:2011-08-21 23:20:07
【问题描述】:
我有一个通过安全/SSL 套接字连接到服务器的客户端应用程序。用户需要在应用程序启动时登录。现在我有一个要求,我需要将实际密码发送到服务器(通过 SSL 加密),而不是发送密码哈希的首选方法。话虽如此,如果客户端由于连接丢失而需要在后台重新连接到服务器,我该如何将密码安全地存储在客户端内存中,以便我可以重新使用此密码?
我可以轻松地对密码进行加密,甚至可以将其放入 KeyStore 并稍后检索以重新连接,但是,即使我这样做,在我看来,如果黑客有权访问应用程序,他也可以检索密码在调试器中。当需要将密码临时存储在客户端上时,这只是生活中的事实吗?
是否有更好/首选的方法来实现相同的目标(即允许客户端重新连接到服务器,而无需用户在初始登录后再次输入密码)?从服务器发送的过期登录令牌会是更好的方法吗(我可以在重新连接时将此过期令牌而不是密码传递回服务器)?
最后,一般来说,当应用程序正确“去除”调试符号时,将调试器连接到 Java 桌面或 Android 上正在运行的应用程序有多容易?我什至需要担心这种情况,还是 Java 会保护我的交付应用程序免于附加调试器或其他内存分析器?
【问题讨论】:
标签: java debugging passwords keystore