如何在 Spring RESTful 登录服务中安全地发送/存储密码

blu*_*123 7 java spring spring-mvc restful-architecture

在登录服务中,用户将 json 作为有效负载发布到 Spring RESTful 登录服务,如下所示:

{
 "username": "john",
 "password": "doe"
}
Run Code Online (Sandbox Code Playgroud)

一旦 Spring RESTful 服务收到调用,它就会将密码与数据库中纯文本存储的一个进行比较。

我在当前的实现中看到了两个问题。

  1. 密码作为 POST 负载以纯文本形式通过 HTTP 发送。
  2. 存储在数据库中的正确密码是纯文本格式。

对于问题2,我决定使用bcrypt中提到的加密存储在数据库中的密码,这个帖子这是一个好方法吗?

对于问题 1,我不知道是否有最佳实践。有人可以分享你的insigts吗?谢谢!

编辑:

抱歉,我忘了提及客户端和服务器通过 HTTPS 进行通信。密码在 POST 有效载荷中发送。

在这种情况下,问题2(存储bcrypted正确密码)在数据库中的解决方案是可以的,对吗?

在问题 1 中,在这种情况下,密码可以在 post payload 中以纯文本形式发送吗?

xen*_*ros 8

  1. 使用 HTTPS。
  2. 密码应在请求正文中,因此请使用 POST。
  3. 发送前不要散列密码。
  4. 将存储在数据库中的哈希与收到的哈希密码进行比较。

没有理由加密密码。这是个坏主意。它们应该是散列的,最好是加盐的。万一有人窃取了您的数据库,破解用户密码将更加困难。

如何安全地存储密码。