【问题标题】:How to decrypt "Spring Security" password in grails?如何解密grails中的“Spring Security”密码?
【发布时间】:2013-09-17 22:48:50
【问题描述】:

我需要解密密码才能发送电子邮件。谁能指导我如何解密grails中的“Spring Security”密码?

谢谢 淅淅沥沥

【问题讨论】:

  • 我真的希望你不能解密密码(你应该使用单向哈希算法),如果你能解密密码你已经有安全风险了。
  • 这取决于实际配置,但通常没有办法“解密”密码。只有“蛮力攻击”。顺便说一句,如果您只是从 spring 应用程序迁移到 grails,并且不知道如何支持现有的授权,请查看 Spring Security Plugin for Grails。
  • 您不会在电子邮件中发送密码。如果用户忘记了他们的密码,那么您向他们发送一个带有一次性令牌的链接,该令牌会将他们发送到他们可以设置 密码的页面。

标签: grails encryption spring-security


【解决方案1】:

密码未加密,这意味着它们可以被解密,它们是经过哈希处理的。散列需要各种输入并生成固定长度的输出,因此该过程是有损的,因为大的原始输入不能完全存储在小的散列输出中。

但这对于密码来说是可以的。您无需解密(或“去散列”)存储的密码以查看登录尝试是否有效,而是从登录页面散列密码并将其与存储的散列值进行比较。这两个不必相同,例如在使用 Bcrypt 时,它们的值不会相同,但哈希算法实现将具有确定两个哈希是否相等的逻辑。

如果您以可以检索原始值的方式存储密码,则最好以明文形式存储它们。但这太疯狂了,因为任何有权访问该表的人都可以看到它们。

正如 cmets 中所述,切勿通过电子邮件发送明文密码。而是配置一个工作流程,您的用户可以在其中重置密码。 http://grails.org/plugin/spring-security-ui 插件具有此功能。如果您不想使用整个插件,请随意窃取此功能的代码。基本上,工作流程是用户为其用户名请求重置电子邮件。只询问用户名,而不是他们的电子邮件;使用你已有的。生成唯一令牌并存储它,并在电子邮件中的链接中使用它。当用户单击链接时,您可以验证令牌并知道这不仅仅是来自黑客的任意请求,而是来自用户,因为您使用他们的电子邮件地址来验证他们的身份。

【讨论】:

    【解决方案2】:

    1) 您应该使用单向哈希算法来加密无法解密的密码。 (否则,它对应用程序的安全威胁)

    2) 永远不要在电子邮件中发送文本密码。事实上,您应该使用像在电子邮件中发送重置/忘记密码链接这样的工作流程。(这些链接可以附加 UUId 作为任何新的重置/忘记密码请求的参数,这足以识别)。

    【讨论】:

      猜你喜欢
      • 2015-10-01
      • 2014-07-29
      • 1970-01-01
      • 2015-10-19
      • 2012-04-10
      • 2013-11-21
      • 2012-09-12
      • 1970-01-01
      • 2016-01-01
      相关资源
      最近更新 更多