我在权衡使用“从头开始的身份验证”(如本Railscast中实现的)和使用designe的利弊。
我正在使用一个自定义数据存储,所以使用devide并不像按照自述文件那样简单。它需要写一个custom ORM adaptor,这远不是小事。
考虑到所有这些,railscast从头开始的身份验证似乎更容易实现。
那么它有多安全?
更新:我应该指出我使用parse.com作为数据存储。这意味着他们负责散列密码和限制用户名的唯一性。

最佳答案

它们都是通过使用bcrypt生成密码的咸散列来工作的,唯一的区别是devise(默认情况下)对散列使用更高的成本(也就是说,使用更大的cpu周期来强制它),但是当然可以很容易地将其添加到railscast代码中,在这方面大致相当。
RailsCast版本似乎确实容易受到定时攻击,因为只执行==不会给您提供恒定的时间比较操作。简而言之,计时攻击之所以有效,是因为与前半个字节正确的密码相比,哈希值完全错误的密码拒绝==所需的时间更短(因此==在释放之前必须考虑更多字节)。似乎任何这样的差异都会被网络延迟等变化带来的噪音所消除,但人们已经通过这些方法发动了真正的攻击来恢复密钥。
显然,你可以从designe那里借用secure compare位,但它确实表明了其中涉及到一些不明显的问题。
显然,设计给你的不仅仅是认证!

关于ruby-on-rails - Railscasts的“从头开始进行身份验证”有多安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8598273/

10-10 07:11