【问题标题】:Validating encrypted passwords in grails在 grails 中验证加密密码
【发布时间】:2011-08-29 03:22:10
【问题描述】:

在 grails 中,我可以将密码字段设置为最小大小限制为 5(任意)。问题是我使用 Spring Security 服务对我的密码进行编码,并且无论我输入什么值,编码/加密的密码几乎都超过 5 个字符。

另一个论坛回复建议在保存方法中进行验证。有没有其他人解决过这个问题并知道解决方法?

Spring security 不提供解码方法(可能出于安全目的)......所以我想一个想法是获得一个不同的密码编码器,可以解码密码以进行验证......但我的直觉说 spring安全性将其排除在外是有充分理由的,也许我也应该这样做...

static constraints = {
    username(blank: false, unique: true)
    password(minSize: 5, blank: false, unique: true,
        validator: { passwd, user ->
            return passwd != user.username
    })
    passwordRepeat(nullable: false,
    validator: { passwd2, user ->
        return passwd2 == user.password 
    })
}

所以我使用静态约束来验证,因为大多数其他变量都是通过这种方式验证的。

对于不可读的评论,我深表歉意。

谢谢你, -阿萨夫

编辑:我认为上面提到的一个简单修复方法是在保存方法中进行验证(在加密之前),但我只是觉得以前一定有人必须处理过这个问题。我的意思是有很多网站需要密码,如果它太短,如果它不包含小写和大写字母,如果它没有符号......他们都是如何做到的?他们使用的验证方法?

【问题讨论】:

  • 我不确定是什么问题....你是如何验证密码的?
  • 静态约束 = { username(blank: false, unique: true) password(minSize: 5, blank: false, unique: true, validator: { passwd, user -> return passwd != user. username }) passwordRepeat(nullable: false, validator: { passwd2, user -> return passwd2 == user.password }) } 所以我使用静态约束来验证,因为大多数其他变量都是通过这种方式验证的。不幸的是,此验证仅在密码加密后完成。
  • 评论中无法阅读,请编辑您的问题。

标签: validation grails encryption passwords encode


【解决方案1】:

您无法解码 Spring Security 编码的内容……那是 md5 或 sha-256 !!!这正是加密过程的目的。那么,即使数据库文件被盗,你也不知道密码是多少

要验证密码,您需要提示用户输入一个清晰的密码,(请在 https 中传输),然后使用相同的算法对其进行编码。然后,您必须将其与您存储的编码密码进行比较

使用类DigestUtils 使用第一次使用的相同算法对收到的密码进行编码。这是一个 Spring 安全配置 grails.plugins.springsecurity.password.algorithm

是的,您必须在保存之前进行验证...为此,我们在 Bootstrap 中添加了一个元类

String.metaClass.validateAsPassword

在保存密码之前有一个独特的点来验证我们的密码

【讨论】:

  • 完美答案。您还可以添加一些 javascript 验证。
  • @Ralf 谢谢 ;-) 你说得对,Javascript 对客户端更友好,可用于在将密码发送给客户端进行比较之前对密码(长度、组成)进行语法检查。也有双重编码的支持者(客户端/服务器,2 种不同的算法),甚至在 https 行上。
  • 能否详细说明如何使用String.metaClass.validateAsPassword?我尝试用谷歌搜索它,但找不到如何使用它的示例。谢谢。
  • 我认为现在我将接受 Ralf 的建议并使用 javascript 验证。我将使用我在这里找到的这个免费的可用代码:blog.stevenlevithan.com/archives/javascript-password-validator
猜你喜欢
  • 2013-03-21
  • 1970-01-01
  • 2011-04-11
  • 1970-01-01
  • 2012-09-12
  • 2014-08-09
  • 1970-01-01
  • 2017-05-31
  • 2014-08-12
相关资源
最近更新 更多