has_secure_password
bcrypt-rubyを使用しています。 bcrypt-ruby
は自動的に塩の貯蔵と生成を処理します。 bcrypt-ruby
の典型的なハッシュは、$2a$10$4wXszTTd7ass8j5ZLpK/7.ywXXgDh7XPNmzfIWeZC1dMGpFghd92e
のようになります。
- バージョン:2A
- コスト:10
- 塩:$ 2A $ 10 $ 4wXszTTd7ass8j5ZLpKこの機能利回り例えば、ハッシュについて
def split_hash(h)
_, v, c, mash = h.split('$')
return v, c.to_i, h[0, 29].to_str, mash[-31, 31].to_str
end
:このハッシュは、以下の機能を使用して内部的に分割され、 /7。
- ハッシュ:ywXXgDh7XPNmzfIWeZC1dMGpFghd92e
BCrypt::Password
の==
-functionは塩を抽出し、渡された文字列に適用されます。私は、著者は、塩のために別の列について尋ねたことが信じられ
BCrypt::Password.create('bla') == 'bla' # => true
。この塩を制御する方法はありません。したがって、ユーザーにとってはハッシュエクステンダーのように機能します.1つの列を妥協すると、パスワードを壊すだけです。 – jdoe
質問は 'has_secure_passwordは何らかの形の塩を使用していますか?'という質問がありました。 ほとんどの場合、データベース全体が危険にさらされていると思います。したがって、塩が余分な列に保存されても差はありません。 しかし、データベースの1つの列だけが侵害された場合には、より安全です。 – fabi
こんにちはファビ、答えのおかげで、あなたはそれが面白い/より多くの視聴者に適用されると思う場合は、同様に質問をupvoteしてください。 –