And*_*Dev 5 java passwords debugging keystore
我有一个客户端应用程序通过安全/ SSL套接字连接到服务器.应用程序启动时,用户需要登录.现在我要求我需要将实际密码发送到服务器(通过SSL加密),而不是发送密码哈希的首选方法.话虽如此,我如何安全地将密码存储在客户端内存中,以便在客户端由于连接丢失而需要在幕后重新连接到服务器时可以重新使用此密码?
我可以轻松地加密密码,甚至可以将其放入KeyStore并稍后检索它以进行重新连接,但是,即使我这样做,在我看来,如果他在调试器中访问了应用程序,黑客也可以检索密码.当需要在客户端暂时存储密码时,这只是生活中的事实吗?
是否有更好/首选的方法来实现相同的目标(即允许客户端重新连接到服务器而无需用户在初次登录后再次输入密码)?从服务器发送的过期登录令牌是否是更好的方法(我可以将此过期令牌传递回服务器而不是重新连接时的密码)?
最后,一般来说,当应用程序被正确"剥离"调试符号时,有人将调试器连接到Java桌面或Android上正在运行的应用程序是多么容易?我是否需要担心这种情况,或者Java是否会保护我的运输应用程序没有附加调试器或其他内存分析器?
您无法对应用程序中的(系统范围的)键盘记录器执行任何操作。因此,将密码存储在内存中是有风险的,但比会话令牌的风险要小:
黑客可以使用伪造 SSL/安全重新连接的恶意客户端并暴力破解令牌。这种方法比将密码存储在内存中会带来更多风险。