首页 文章

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

提问于
浏览
4

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

{
 "username": "john",
 "password": "doe"
}

Spring RESTful服务收到调用后,会以纯文本格式将密码与数据库中的一个存储进行比较 .

I see two problems in the current implementation.

  • 密码作为POST有效负载以纯文本形式通过HTTP发送 .

  • 存储在数据库中的正确密码是纯文本格式 .


对于问题2,我决定使用bcrypt来加密存储在数据库中的密码,如this post中所述 . Is this a good way?

对于问题1,我不知道是否有最佳实践 . Can some one share your insigts? 谢谢!

Edit:

对不起,我忘了提到客户端和服务器通过HTTPS进行通信 . 密码在POST有效负载中发送 .

在这种情况下,在数据库中发布2(存储加密的正确密码)的解决方案是可以的,对吧?

在问题1中,在这种情况下,密码可以在纯文本的后有效负载中发送?

2 回答

  • 4
    • 使用HTTPS .

    • 密码应该在请求正文中,因此请使用POST .

    • 在发送之前不要哈希密码 .

    • 将存储在数据库中的哈希与哈希接收密码进行比较 .

    没有理由加密密码 . 这是个坏主意 . 它们应该被散列并且最好是盐渍的 . 如果有人窃取您的数据库,则更难以破坏用户的密码 .

    How to securily store passwords.

  • -1

    我不是很了解你的要求 . 如果你想要良好的做法,那么xenteros是对的:

    使用HTTPS . 密码应该在请求正文中,因此请使用POST . 发送前请勿散列密码 . 比较存储在数据库中的哈希值和哈希接收密码 . 没有理由加密密码 . 这是个坏主意 . 它们应该被散列并且最好是盐渍的 . 如果有人窃取您的数据库,则更难以破坏用户的密码 .

    如果您绝对想要使用HTTP而不是HTTPS,则可以使用javascript对密码进行哈希处理 . 不要使用javascript加密 . 有人可以重复使用它来解密密码 . 一般而言,出于安全原因,请勿使用加密来存储密码 .

    fastest MD5 Implementation in JavaScript

    你应该更喜欢xenteros的解决方案

相关问题