使用Spring Security为实时Grails应用程序增加BCrypt logrounds而不重新编码所有密码是否安全?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Spring Security为实时Grails应用程序增加BCrypt logrounds而不重新编码所有密码是否安全?相关的知识,希望对你有一定的参考价值。

这个问题适用于使用配置了BCrypt的Spring Security生成Grails应用程序。

为了跟上提高服务器CPU速度的步伐,我想提高grails.plugin.springsecurity.password.bcrypt.logrounds属性的值,以便密码散列需要更长的时间并且不易受到攻击。

首先想到的是,我认为这是一项艰巨的任务,需要在用户登录或大规模重新编码和自定义登录处理程序时采用涓涓细流方式,但在运行之间本地尝试时,它似乎无需任何其他更改(使用持久数据库,模拟非本地部署)。

我猜这是因为logrounds存储在密码哈希中:例如,当在本地运行之间从10到20时,密码看起来如下

$2a$10$i/PEPcvSj...

'$2a$20$3GGujw6o...

我测试过:

  • 在更改之前创建的旧帐户仍可以登录。
  • 旧帐户可以更改其密码,新的哈希值使用新的logrounds设置
  • 可以按预期创建和登录新帐户
  • 尝试使用不存在的帐户登录会产生预期的新延迟。

有没有理由不继续改变?这里的高度谨慎是因为以任何方式阻止生产登录的错误将是非常昂贵的

答案

一切都按预期工作,所以答案是肯定的,你可以。您可以更改loground而不会影响现有帐户,因为用于生成哈希的loground内置于哈希中。 BCrypt的好功能

以上是关于使用Spring Security为实时Grails应用程序增加BCrypt logrounds而不重新编码所有密码是否安全?的主要内容,如果未能解决你的问题,请参考以下文章

使用Spring Security为实时Grails应用程序增加BCrypt logrounds而不重新编码所有密码是否安全?

如何在 Spring Security 无状态(jwt 令牌)中注销用户?

基于Spring Boot+Security+Redis权限管理系统,权限控制采用RBAC

Spring Security 和 Websocket 的 CORS 问题

一款基于SpringBoot + Spring Security的后台管理系统,强烈推荐,直接用

Grails 中基于 RESTful 证书的 (X509) 登录身份验证