問題タブ [php-password-hash]
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.
php - password_hash 関数で使用するのに十分と考えられるパスワードの強度はどれくらいですか?
私が理解している限りでは、新しいPHP パスワード ハッシュ拡張機能(または一般的には bcrypt) の最も重要な機能の 1 つは、アルゴリズムの速度であり、ブルート フォース攻撃方法が大幅に遅くなります。
それでもある程度の速度で動作し、辞書攻撃や脆弱なパスワードのブルート フォース攻撃には十分であり、[おそらく] 6 文字の英数字よりも短い.
だから私は、それがどのように確かに遅いのか、特に、どのパスワード強度が安全に使用できると考えられているのかを知りたい. パスワードの強度は常にセキュリティと使いやすさのトレードオフであるため、「想像できる限りの強度」は答えではありません。
私は実践者であることに注意してください。したがって、具体的な数字に基づく特定の回答は、不確実な結論を伴う長く風の強い理論的推論よりもはるかに望ましい.
もう少し明確にするために、想定される最悪のシナリオ: ユーザー データベースが盗まれ、誰かがパスワードを解読しようとするでしょう。強い塩のおかげで、レインボーテーブルはオプションではありません. したがって、残っている唯一のベクトルは、辞書攻撃とブルート フォースです。事前に生成されたパスワードをユーザーに提供していると仮定すると、辞書攻撃が排除されます。これが、パスワードの強度が私の唯一の関心事である理由です。
更新:
よく理解されていなかったようです。私にとって、この質問は非常に実用的で、かなり答えやすいものです。そして非常に重要です。
十分なパスワードの強度を判断しないと、この新しいアルゴリズムの使用が疑問視される可能性があります。パスワードがまだ安全でないままであるのに、なぜ良いアルゴリズムを気にする必要があるでしょうか? そのため、新しいハッシュ アルゴリズムを使用するための推奨事項とともに、パスワードの最小強度に関する推奨事項が常に存在する必要があるというのが私の強い信念です。私が知りたいこと。
言い換えれば、ある部分について特定の確実性が存在する場合 - アルゴリズム (「他のものではなく、これを使用してください!」) - 別の部分について確実性があるはずです - 同じレベルの権限で話すことができるパスワードの強度. そうしないと、最も弱い部分が最も強い部分を台無しにしてしまいます。
php - password_needs_rehash をいつ使用するか
password_needs_rehash をいつ、どのように使用するかについて混乱しています。私の思考過程をご紹介します。
password_hash($password, PASSWORD_DEFAULT) を使用して、ユーザーのパスワードをハッシュし、ユーザー データベースに保存しました。次に、ユーザーのログインを許可し、プロセスのある時点でコントローラーが password_verify($password, $hashedPassword) を呼び出して、ユーザーを検証します。この関数は、ハッシュされたパスワードで使用されているアルゴリズムに基づいて、指定されたパスワードをハッシュすると想定しています。
これが私の本当の質問です。デフォルトのアルゴリズムが変更された場合、いつ password_needs_rehash() 関数を呼び出す必要がありますか? ユーザーがログインした後、ユーザーがダッシュボードにリダイレクトされる前に、コントローラーから呼び出す必要がありますか?
php - password_hash() エラーに対する PHP 5.3 パッチ
安全な認証を必要とする最初のプロジェクトに取り組んでいます。私のホスティングはまだ PHP 5.3.27 を使用しているため、ここにある password_hash() 互換性パッチを使用しています。私の問題はreturn password_hash($password, PASSWORD_BCRYPT, array('cost'=>$cost));
、 $password は文字列でなければならないというエラーが出ることです。なぜ文字列ではないのですか?どこからデバッグを開始すればよいかさえわかりません。
パスワードを取得する HTML
register.php の内容
validate.php の内容 *password.php は password_hash() の 5.3 互換パッチです*
php - PASSWORD_DEFAULT 対 PASSWORD_BCRYPT
PASSWORD_DEFAULT と PASSWORD_BCRYPT の違いは何ですか? どちらも Blowfish 暗号化アルゴリズムを使用していますか? アルゴリズムのコストとは何ですか? PHP で password_hash を設定する方法は、60 ではなく 255 ハッシュ長を生成しますか?
php - パスワードPHPをハッシュするための良い/安全な方法ですか
私が使用していた:
パスワードのハッシュには使用できますが、5.3.7 より前の PHP バージョンとは互換性がありません。そこで、パスワードを生成して検証するためのこの小さな関数を作成しました。しかし、私はセキュリティの専門家ではないので、それが非常に安全なのか、それともまだ安全でないのかを知りたいのです。
私の機能:
php - PHP 5.4 での未定義関数 password_hash() の呼び出し
password_hash()
Web サイトで関数を使用しようとしましたが、エラーが発生Call to undefined function password_hash().
しました。GoDaddy でサーバーの詳細を確認しました。現在のバージョンの php は 5.4 です。どうすればこれを修正できますか?
php - phpで生成したnodejsのパスワードハッシュを検証
password_hash
私のphpコードは、データベースに保存するハッシュを生成します。以下はPHPコードです。
nodejsでこのハッシュに対してパスワードを検証/チェックしたいと思います。
多くのノード モジュール (bcrypt、phpass、node-bcrypt) を見ましたが、それらはすべて false です。以下は、php で生成されたサンプル ハッシュで、nodejs で検証しようとしています。
(ここでシークレットは本当のパスワードです)
私の現在の回避策は、ノードを介してphpスクリプトを呼び出して確認することです(回避策が必要な人向け)
これはハックであり、この問題に対する良い答えではありません。このような回避策を使用せずに nodejs でパスワードを確認する方法はありますか?
php - PHP < 5.5: password_hash 互換の暗号ハッシュ
わかった。私は本当に大規模な調査を行いましたが、暗号化/ハッシュの知識はありません。自分のマシンにはphp 5.5があり、password_hash関数を使用しています。オンライン ホスティングの最大値が PHP 5.4 であることに気付きました。
私は暗号化のための特別なクラスを持っています。そのため、(できれば) 多くの変更を行う必要はありません。これが私の簡単なコードです:
ご覧のとおり、これは単純なオーバーレイですが、初めて使用する機会があります。password_hash および password_verify 関数を crypt 関数に置き換えて、将来 passrowd_ 関数と互換性を持たせるにはどうすればよいですか?
例えば。今度は crypt() を実行し、その結果をユーザー データベースに保存します。将来、password_hash 関数と password_verify 関数に切り替えるときは、この暗号化されたパスワードを機能させ、すべてのユーザーにパスワードの変更を強制しないようにします。
調査中に何も見逃していないことを願っています。シンプルでエレガント、そして安全なソリューションを探しています:)。
Thx for You help, br
更新: 私はこれを読みました ( http://pl1.php.net/manual/en/function.password-hash.php ):
password_hash() は、強力な一方向ハッシュ アルゴリズムを使用して新しいパスワード ハッシュを作成します。password_hash() は crypt() と互換性があります。したがって、crypt() によって作成されたパスワード ハッシュは、password_hash() で使用できます。
しかし、crypt には多くのオプションがあり、それらすべてに互換性があるかどうかはよくわかりません。
php - PHP の「password_hash」が文字列を返さないのはなぜですか?
(パスワード変更済み)
上記の PHP コードで小さな問題に直面しています。実行されるたびに、次のエラーが発生します。
Fatal error: Cannot pass parameter 2 by reference by [location]行[##: I shorted the above code... it's password field with issues]
周りを見ると、これは変数を使用せずに文字列/整数を直接渡す場合の問題のようです。ただし、password_hash()
文字列を返すため、文字列を返していないと信じるようになりました。この問題の何が問題になる可能性がありますか?
php - PHP パスワード検証は常に false を返します
PHP のパスワード ハッシュ API を使用して、構築中のサイトのパスワードをハッシュして検証していますが、パスワードを検証しようとすると、常に false が返されます。
データベースに挿入される前にパスワードを設定する User クラスがあります。
ユーザー名と電子メールが一意の場合、新しいユーザー行が挿入されます。データベースを確認すると、パスワードに有効な BCRYPT 文字列と思われるものがあります。
パスワードを確認するために、次のスクリプトを実行します。
$hash
上記の文字列に関係しますが、入力フィールドから取得した平文のパスワードがpassword_verify($password, $hash)
where is であると呼び出すと、常に false の値が返されます。$password