【问题标题】:Apache Shiro salt hashed passwordApache Shiro 盐哈希密码
【发布时间】:2015-10-24 16:44:05
【问题描述】:

我需要使用 Apache Shiro 对哈希 (SHA-256) 密码进行加盐处理。我使用了以下方法,但它使用纯文本密码作为参数。但是我需要从前端获取一个已经散列的密码并将其加盐并存储在服务器端。否则,如果我使用以下方法,我将不得不一直通过前端传递纯密码,这是不安全的。所以请给我一个解决这个问题的方法。

String hashedPassword = new Sha256Hash(plainTextPassword, salt);

【问题讨论】:

    标签: hash shiro sha256


    【解决方案1】:

    密码经过哈希处理后不能加盐。加盐通过将盐与纯文本密码结合起来,并对整个事物进行散列处理。这就是 Shiro 的 Sha256Hash 要求你给它明文密码的原因。

    只要这种通信是安全的(例如用于 Web UI 的 HTTPS),通常会将纯文本密码从前端传递到服务层。您唯一不应该做的就是将纯文本密码存储在数据库中(正确配置的 Shiro 不会这样做),因为您的数据库可能会受到损害。

    当将明文密码从前端传递到您的服务时,它只会在内存中存在很短的时间,然后才会被垃圾回收。要获取密码,有人必须破坏您的 SSL 连接(在这种情况下,您无论如何都会被搞砸)或破坏您的服务器并转储内存(在这种情况下,无论如何您都会被搞砸)。

    【讨论】:

    • 顺便说一下,在前端对密码进行哈希处理并不安全,因为任何能够拦截哈希的人都可能欺骗您的网站登录。这就是为什么确保其安全的唯一方法是使用 SSL 加密传输层,即使用 HTTPS。
    • 感谢详细的回复!感谢您的帮助。
    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多