問題タブ [bcrypt-ruby]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2745 参照

ruby-on-rails - Rails で BCrypt を使用して手動で認証する

Rails アプリで BCrypt を使用して、ユーザーのパスワードを安全に保存しようとしています。暗号化されたパスワードを問題なく保存し、それを元のプレーン テキスト文字列と比較して正常に検証することさえできます。問題は、パスワードを暗号化するたびに異なる出力が得られ (ソルトか何かが原因であると想定しています)、データベースに保存された後に検証が保持されないことです (私は.違いがある場合は sqlite3 データベース)。

例 (Rails コンソール):

has_secure_password のような既製のソリューションがあることは知っていますが、これを手動で実装して、何が起こっているのかを本当に理解したいと思います。

0 投票する
1 に答える
111 参照

ruby-on-rails - Rails Web サイトの Bcrypt はどの程度スケーラブルですか?

ブルートフォース攻撃の実用性を制限するためにハッシュするとき、Bcryptの要点は時間のかかることであることを私は知っています。しかし、それは本質的にスケーラブルではありませんか? たとえば、私が読んだあるサイトでは、現在のハードウェアでハッシュに 0.25 秒かかるように Bcrypt のコスト ファクターを調整する必要があると主張していました。常に数百人がログインしている適度に成功したサイトがある場合、この 0.25 秒は、すべてのユーザーが数秒待機する可能性があることを意味しますか? サーバーの CPU が 0.25 秒間ハッシュするときに最大になり、リソースの使用率が常に高くなりますか?

二次的な質問として、スケーラブルであると仮定すると (私はそう確信しています)、最近の適切なコスト要因は何ですか?

0 投票する
3 に答える
3258 参照

ruby-on-rails - 「BCrypt::Errors::InvalidHash: 無効なハッシュ」Omniauth ID

Omniauth ID を使用した Rails 4 アプリケーションを使用していますが、本番環境では、一部のユーザー (少数) に対して次のエラーが発生しました。

メソッド hash_valid を使用して、すべての ID password_digest をテストしました。

そして、すべて良いです。

したがって、問題はユーザーが指定したパスワードに起因すると思いますが、どこにあるのかはわかりませんが、開発中にエラーを再現できません。

ログインのフォームは基本的なものです。

任意のアイデア、ありがとう?

0 投票する
1 に答える
484 参照

ruby-on-rails - BCrypt 認証が機能しない

ユーザーを作成し、その後 BCrypt を使用して認証できる単純な iOS/Rails アプリケーションをセットアップしようとしています。BCrypt の指示に従おうとしましたが、認証プロセスが機能しません。Railsはとても初めてなので、単純なことを台無しにしていると確信しています!

新しいユーザーを作成するには:

users_controller.rb 内

user.rb 内

サーバー上:

2014-08-21 19:32:05 -0500 で 192.168.2.6 の POST "/users.json" を開始しました JSON パラメーターとして UsersController#create で処理: {"username"=>"testtest", "password"=>" [FILTERED]", "user"=>{"username"=>"testtest"}} (0.1ms) トランザクションの開始 User Exists (20.8ms) SELECT 1 AS one FROM "users" WHERE "users"."username" = 'testtest' LIMIT 1string列の型に挿入されたバイナリ データpassword_hash SQL (0.8ms) INSERT INTO "users" ("created_at", "password_hash", "updated_at", "username") VALUES (?, ?, ?, ?) [["created_at", "2014-08-22 00 :32:05.960378"]、["password_hash"、"$2a$10$UzLdD7ytQXKRDU5MhAawJuFQ3R4oQlPyXh/V4GehNP692fsSpK6wK"]、["updated_at"、"2014-08-22 00:32:05.960378"]、"テスト"ユーザー名"、"テスト" ]] (1.3ms) commit transaction Rendered users/show.json.jbuilder (0.3ms) Completed 201 Created in 136ms (Views: 31.9ms | ActiveRecord: 23.5ms)

ユーザーを認証します。

sessions_controller.rb 内

user.rb 内

サーバ:

*2014-08-21 19:38:26 -0500 で 192.168.2.6 の POST "/session" を開始しました。SessionsController#create as / パラメーター: {"username"=>"testtest", "password"=>"[ FILTERED]", "session"=>{"username"=>"testtest", "password"=>"[FILTERED]"}} ユーザー負荷 (0.2ms) SELECT "users".* FROM "users" WHERE "users "."username" = 'testtest' LIMIT 1 Rendered sessions/fail.json.jbuilder (0.2ms) Completed 200 OK in 105ms (Views: 23.3ms | ActiveRecord: 0.2ms)*

洞察に感謝します!

0 投票する
2 に答える
655 参照

ruby-on-rails - bcrypt gem が機能しない

を正常にインストールbcrypt - 3.1.7し、その後バンドルをインストールしました。

ただし、bcrypt gem がリストに表示されず、show bcrypt をバンドルしようとすると、次のように表示されます。

また、私がするとき:

gem 'bcrypt', '~> 3.1.7'

それは言います:

ERROR: While executing gem.. (Gem::CommandLineError) Unknown command bcrypt

私は何をすべきか?

0 投票する
1 に答える
306 参照

ruby - Ruby BCrypt パスワード比較で誤った評価が返される

ユーザーのパスワードを安全に保存するために、Sinatra/Ruby アプリケーションで BCrypt を使用しようとしています。

次のコードは、私の User モデルです。

認証メソッドを so: のように呼び出すとUser.authenticate("bar@foo.com", "admin")、コードは false を返します。ユーザーが存在することは確かです。

編集: u.password == requested_password false も返します

メソッドに渡される値が有効で正しい場合でも、なぜこのようなことが起こるのでしょうか?

0 投票する
0 に答える
1197 参照

ruby-on-rails - Openshift は bcrypt をインストールしません

Ruby on Rails アプリを OpenShift にプッシュしようとしていますが、gem ファイル bcrypt で問題が発生しています。ローカルではすべて問題ありませんが、Openshift 側で実行しようとすると、このエラーが発生します。

ロードするファイルはありません -- bcrypt (LoadError) /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb: 247: requirerequire' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:inのブロック内' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:232:require 内load_dependency' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activemodel-4.1.1/lib/active_model/secure_password.rb:49:in has_secure_password' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/app/models/user.rb:13:in' /var/lib/openshift /548f13fce0b8cdf18c000001/app-root/runtime/repo/app/models/user.rb:1:in<top (required)>' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:inrequire' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in block in require' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:232:inload_dependency' /var/lib /openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:247:in require' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:348:inrequire_or_load' /var/lib/openshift/548f13fce0b8cdf18c000001/app -root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:307: depend_on' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:225:inrequire_dependency 内' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo /vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:468:inblock (2 levels) in eager_load!' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:467:ineach' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:467:in block in eager_load!' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:465:ineach' /var/lib /openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:465:eager_loadeager_load!' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/engine.rb:346:inで!」/var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/application/finisher.rb:58:in each' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/application/finisher.rb:58:inblock in ' /var/ lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/initializable.rb:30:instance_exec' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/initializable.rb:30:in実行中' /var/lib/openshift/548f13fce0b8cdf18c000001/ app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/initializable.rb:55:inblock in run_initializers' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:150:inblock in tsort_each' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:183:in block (2 levels) in each_strongly_connected_component' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:219:ineach_strongly_connected_component_from' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:182:in block in each_strongly_connected_component' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:180:ineach' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:180:in each_strongly_connected_component' /opt/rh/ruby200/root/usr/share/ruby/tsort.rb:148:intsort_each' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems /railties-4.1.1/lib/rails/initializable.rb:54:run_initializers' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/railties-4.1.1/lib/rails/application.rb:288:in初期化中!」/var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/config/environment.rb:5:require <top (required)>' config.ru:1:in' config.ru:1:in block in <main>' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/runtime/repo/vendor/bundle/ruby/gems/rack-1.5.2/lib/rack/builder.rb:55:ininstance_eval' /var/lib/openshift/548f13fce0b8cdf18c000001/app-root/ runtime/repo/vendor/bundle/ruby/gems/rack-1.5.2/lib/rack/builder.rb:55:in initialize' config.ru:1:innew' config.ru:1:in<main>' /opt/rh/ruby200/root/usr/share/gems/gems/passenger-4.0.18/helper-scripts/rack-loader.rb:78:ineval' /opt/rh/ruby200/root/usr/share/gems/gems/passenger-4.0.18/helper-scripts/rack-loader.rb:78:in load_app' /opt/rh/ruby200/root/usr/share/gems/gems/passenger-4.0.18/helper-scripts/rack-loader.rb:96:in' /opt/rh/ruby200/root/usr/共有/gems/gems/passenger-4.0.18/helper-scripts/rack-loader.rb:4:in <module:PhusionPassenger>' /opt/rh/ruby200/root/usr/share/gems/gems/passenger-4.0.18/helper-scripts/rack-loader.rb:3:in'

私の最新の宝石ファイル:

ソース ' https://rubygems.org '
...
gem 'bcrypt'
gem 'bcrypt-ruby'
...

私の Gemfile.lock には、必要なすべての依存関係が含まれています。

知っておくべき重要な事実は、プッシュ変更後の Openshift コンソールは gem ファイル bcrypt および bcrypt-ruby をインストールしないということです。オプトプットをフォローする

remote: Ruby カートリッジを停止
しています remote: 1 つのデプロイメントのリンクを修復しています

remote: 強制的にクリーン ビルドを有効にします - 依存関係をクリーニングします
remote: git ref 'master' をビルドし、cab854c をコミットします
remote: Ruby カートリッジを
ビルドします remote: bundle install --deployment --path ./app -root/repo/vendor/bundle
remote: 注意: 以下を使用して、特定の Gemfile グループのインストールを防ぐことができます: rhc env set
BUNDLE_WITHOUT=groupname
remote: Fetching gem metadata from https://rubygems.org/ ........
remote : rake (10.4.2)
のインストール remote: i18n (0.6.11) の
インストール remote: json (1.8.1)
のインストール remote: minitest (5.5.0) のインストール
remote: thread_safe (0.3.4) の
インストール remote: tzinfo (1.2.2)
のインストール remote: activesupport (4.1.1) の
インストール remote: builder (3.2.2)
のインストール remote: erubis (2.7.0) の
インストール remote: actionview のインストール ( 4.1.1)
リモート: rack (1.5.2)
のインストール リモート: rack-test (0.6.2) の
インストール リモート: actionpack (4.1.1)
のインストール リモート: mime-types (1.25.1) の
インストール リモート: polyglot (0.3 ) のインストール.5)
remote: treetop (1.4.15) の
インストール remote: mail (2.5.4)
のインストール remote: actionmailer (4.1.1) のインストール remote: activemodel (4.1.1) の
インストール
remote: arel (5.0.1.20140414130214) のインストール
remote: activerecord (4.1.1)の
インストール remote: execjs (2.2.2)
のインストール remote: autoprefixer-rails (4.0.2.1) の
インストール remote: sass (3.2.19)
のインストール remote: bootstrap-sass (3.3.1.0) のインストール
remote : bootstrap_form (2.2.0)の
インストール remote: childprocess (0.5.5)
のインストール remote: coffee-script-source (1.8.0) の
インストール remote: coffee-script (2.3.0) の
インストール remote: thor (0.19.1)のインストール
remote: railties (4.1.1)
のインストール remote: coffee-rails (4.0.1) の
インストール remote: ハイク (1.2.3)の
インストール
remote: multi_xml (0.5.5) のインストール remote: httparty (0.13.3) のインストール
remote: multi_json (1.10.1)の
インストール remote: jbuilder (2.2.5)
のインストール remote: jquery-rails (3.1.2) の
インストール remote: mysql2 (0.3.17)のインストール
remote: bundler (1.3.5) の使用
remote: インストールチルト (1.4.1)
リモート: スプロケットのインストール (2.11.0)
リモート: スプロケットレールのインストール (2.2.2)
リモート: レールのインストール (4.1.1)
リモート: rdoc のインストール (4.2.0)
リモート: ruby​​zip のインストール (0.9 ) .9)
リモート: sass-rails (4.0.5) の
インストール リモート: sdoc (0.4.1)の
インストール リモート: websocket (1.0.7)
のインストール リモート: selenium-webdriver (2.35.1) のインストール
リモート: ターボリンクのインストール (2.5. 3)
リモート: uglifier (2.6.0) の
インストール リモート: validates_cpf_cnpj (0.2.0)のインストール
リモート: フリーズ中に変更されたロックファイルを書き込むことはできません。
remote: バンドルが完成しました!
remote: ./vendor/bundle にインストールされました
remote: httparty からのインストール後のメッセージ:
remote: HTTParty を使用する場合は、ハード パーティーを行う必要があります。
remote: rdoc からのインストール後のメッセージ:
remote: ruby​​ のバージョンによっては、ruby をインストールする必要があるかもしれません rdoc/ri data:
remote:
remote: <= 1.8.6 : unsupported
remote: = 1.8.7 : gem install rdoc -データ; rdoc-data --install
remote: = 1.9.1 : gem install rdoc-data; rdoc-data --install
remote: >= 1.9.2 : 何もする必要はありません! わーい!
remote: デプロイ用のビルドを準備しています

gem ファイルがインストールされていないことがエラーの原因であることは明らかですが、問題はその理由です。

0 投票する
3 に答える
1556 参照

ruby-on-rails - bcrypt gem のインストールに失敗しました

OPからの追加情報で編集: