使用 Java 将密码从客户端应用程序发送到服务器

信息安全 密码 爪哇
2021-08-31 14:47:41

我正在开发一个需要用户登录的应用程序。在服务器端,我使用 PBKDF2 算法对密码进行哈希处理,但目前我将密码作为纯文本字符串发送到服务器。现在它很容易被嗅探,但我不知道如何改变它。我应该怎么做才能使这更安全?

1个回答

使用 TLS 连接到服务器。

安全地散列密码的目的是在数据库被盗时更难攻击。它并非旨在防止嗅探明文密码。为了通过恶意介质安全地与服务器通信,您应该使用 TLS。这将防止在线拦截,而服务器端 PBKDF2 将防止从被盗数据库的内容中轻松恢复密码。

您可能很想在客户端另外散列它。不幸的是,这不会阻止攻击者记录从客户端发送的哈希值并在以后使用它登录。TLS 为大量威胁模型提供保护,并明确考虑到这个问题。它将防止攻击者简单地重放您正在使用的任何凭据。客户端散列有益的唯一情况是服务器是敌对的,但服务器无法控制客户端执行的代码,或者服务器功率太低而无法执行适当的慢速 KDF 和一些繁重的处理必须卸载到客户端。无论哪种方式,您都应该使用 TLS。