Ruby on rails 如何在设备中禁用加密密码?

Ruby on rails 如何在设备中禁用加密密码?,ruby-on-rails,devise,Ruby On Rails,Devise,如何在Desive中禁用加密密码?我同意Shingara的观点。你永远不应该以可恢复的方式存储人们的密码designe存储散列(未加密)的密码,它们都是不可读的格式,但区别在于你不能反转散列 如果你想知道为什么,这是因为如果你的网站或数据库遭到破坏,黑客将无法窃取你的用户密码(用户有一个坏习惯,几乎在每个网站上使用相同的密码)。你不想因为不散列密码而显得愚蠢,你也没有借口,因为Desive为你免费提供 使用密码唯一需要做的事情是授权用户,这仍然可以使用哈希密码完成。如果用户忘记了密码,您永远不需

如何在Desive中禁用加密密码?

我同意Shingara的观点。你永远不应该以可恢复的方式存储人们的密码designe存储散列(未加密)的密码,它们都是不可读的格式,但区别在于你不能反转散列

如果你想知道为什么,这是因为如果你的网站或数据库遭到破坏,黑客将无法窃取你的用户密码(用户有一个坏习惯,几乎在每个网站上使用相同的密码)。你不想因为不散列密码而显得愚蠢,你也没有借口,因为Desive为你免费提供


使用密码唯一需要做的事情是授权用户,这仍然可以使用哈希密码完成。如果用户忘记了密码,您永远不需要告诉他们,而是将他们的密码重置为新的密码(Desive也支持此功能)。

免责声明:虽然通常不明智地存储未加密的密码,但可能存在开发人员希望这样做的情况。希望开发人员足够认真,确保在为他们的应用程序做出这个通常糟糕的安全决策时,他们不会危及用户的个人和/或身份信息。您可能会想象这样一种情况,应用程序唯一记录的信息是用户与系统的交互,就像在某种用户交互研究中一样

tl;dr One可以通过以下方式禁用设备中的加密
让它直接返回密码。

你为什么这样做。如果你那样做的话,这是一个很大的安全问题。我希望这不是一件容易的事。你可能真的想详述为什么。例如,如果您想加快测试速度,可以通过在初始化器中的designe.rb中添加“config.streams=Rails.env.test??1:10”来降低加密算法的安全性以提高性能。这一行默认包含在较新版本的Desive中。我个人认为这应该是正确的答案。这不是道德问题,也不是最佳实践。。。这个问题再清楚不过了……:答案很好,Michael。在某些应用程序中,用户可能无法选择自己的密码(一个简单的例子可能是学校里的孩子,在教室里使用一些网络应用程序)。在这些情况下,密码可能类似于他们的学生id,其目的不是实际具有任何安全性,而是验证学生是否希望在系统中使用他们的身份(可能是加载过去的工作)。在这些情况下,数据库将只有一些无意义的数字,而不是任何其他网站上的用户密码,并且很可能也不会泄露电子邮件地址。谢谢Joshua为什么这是公认的答案?为什么这是一个答案(而不是评论)?我对真正的答案很感兴趣,因为在开发应用程序时,我不需要保护我的测试密码。好的,如果你不需要保护测试或开发系统的密码,只需要让它们都使用“test1”或其他一些示例密码。为什么仅仅因为你不需要它就去禁用它(这不仅仅是一个配置开关)?@Jeremy如果你想测试更新/更改密码怎么办,这正是我现在需要做的…?@Micah你仍然可以更新密码,测试加密内容是否与以前不同,然后测试您的新密码是否经过身份验证。一般来说,我不建议在单元测试中这样做。Desive将自己进行测试,您只需对更新密码的html界面进行集成测试,然后使用新密码再次登录。@Micah仍然适用,只是您的集成测试将发送更改API请求,然后确保通过API验证新密码