私はdeviseを使用しないrubyアプリケーションでパスワードを保存して検証し、deviseを使用する将来のアプリケーションと互換性を持たせたいと考えています。デフォルトのパスワードハッシュスキームは何を使用するのですか?このコンポーネントだけを抽出して使用することは可能ですか?どのようなパスワードハッシュアルゴリズムを使用していますか?
0
A
答えて
1
DevitsのDatabaseAuthenticatableモジュールは、Devise::EncryptorモジュールでラップされたパスワードをハッシュするためにBCrpytを使用します。関連する方法、digest
は、非常に単純です:
def self.digest(klass, password)
if klass.pepper.present?
password = "#{password}#{klass.pepper}"
end
::BCrypt::Password.create(password, cost: klass.stretches).to_s
end
klass
は、夫婦のみのパラメータをフェッチするために使用されます:pepper
、データベースに格納されているパスワードの事前ハッシュが、ないに付加される文字列を(とは異なり、 saltも追加されますが、パスワードはDBに保存されます)。 cost
、ハッシュの安全性の基準(the docsを参照)。これらはどちらも静的なものなので、Devise以外のアプリにそれらをハードコードすることができます(ただし、pepper
は秘密にしておいてください)。
だから、あなたのハッシュ法は、同じように書かれるかもしれない:唐辛子は、すべてのユーザー間で同じである
def self.digest(password)
password = "#{password}#{ENV['PASSWORD_PEPPER']}"
::BCrypt::Password.create(password, cost: 10).to_s
end
関連する問題
- 1. 春のセキュリティを使用する際にパスワードハッシュアルゴリズムを変更するにはどうすればよいですか?
- 2. どのようなデザインパターンを使用していますか?
- 3. cakephpパスワードハッシュアルゴリズムを置き換えるにはどうしたらいいですか?
- 4. あなたはどのようなTextmateテーマを使用していますか?
- 5. MariaDBはどのようなSQLの変種を使用していますか?
- 6. cygwinでどのようなバージョンのrubyを使用していますか?
- 7. Perlはどのようなハッシュ関数/アルゴリズムを使用していますか?
- 8. どのような遺伝的アルゴリズム/プログラミングライブラリを使用していますか?
- 9. コンテンツ配信ネットワークはどのようなキャッシングモデルを使用していますか?
- 10. twilioはどのような技術を使用していますか?
- 11. Math.randomはどのようなアルゴリズムを使用していますか?
- 12. SonarQubeはどのような複雑さを使用していますか?
- 13. SlackとHipchatはどのようなテクノロジスタックを使用していますか?
- 14. XMLTextReaderはどのような解析方法を使用していますか?
- 15. Googleタスクではどのようなタイムゾーンを使用していますか?
- 16. どのようなスライドショースクリプトが 'tumblr.com'を使用していますか?
- 17. Wikiaはどのようなソフトウェアを使用していますか?自分のホストしているWikiにはどのようなソフトウェアがありますか?
- 18. has_secure_passwordはどのような形式のソルトも使用していますか?
- 19. どのような種類のアルゴリズムを使用しますか?
- 20. どのようなタイプのデータベースを使用しますか?
- 21. どのような種類のインデックスを使用しますか?
- 22. Pythonを使用してどのようにadblockしますか?
- 23. ビットマップにはどのようなコンテナを使用しますか?
- 24. どのようなコレクションを使用しますか?デルファイ
- 25. Flex:どのようなOpenSourceコンテナコンポーネントを使用しますか?
- 26. どのようなコレクションを使用しますか?
- 27. どのようなデザインパターンを使用しますか?
- 28. Python Maze Solving - どのようなアーキテクチャを使用しますか?
- 29. ArrayListにはどのようなクラスを使用しますか?
- 30. JSF 2:どのようなスコープを使用しますか?
? – fields
範囲からランダムに割り当ててはいけませんか?パスワードを検証したときにテストされる可能性のある値はどれですか?それはまた塩を使うことができますか? – fields
Pepperはすべてのユーザーで同じですが、データベースには格納されません(つまり、ハッシュには格納されません)。塩はユーザーごとにランダムに生成されます(Bcrpytによって、なぜ上記のことも言及されていません)が、ハッシュと共に格納されます。攻撃者は無差別の攻撃を行うためにデータベースとコードベースの両方が必要になるため、両方の組み合わせでセキュリティが強化されます。 –