web-dev-qa-db-ja.com

Drupalはハッシュソルトを再利用します

Default.settings.phpの指示は言う

この変数は、インストーラーによってランダムな値に設定されます。値が変更されると、すべてのワンタイムログインリンクが無効になります。サイトがWebサーバーのクラスターにデプロイされている場合は、この変数の値が各サーバーで同じであることを確認する必要があります。この変数が空の場合、シリアル化されたデータベース資格情報のハッシュがフォールバックソルトとして使用されます。

しかし このソルトの説明 は言う

ユーザーがアカウントを作成するか、パスワードを変更するたびに、新しいランダムソルトを生成する必要があります。

さらに、ソルトハッシュ(パスワードなど)ごとに一意のソルトがハッシュ化された+ソルト化されたパスワードと共にデータベースに格納される必要があることを明確にします。

私がソルティングについて読んだ記事を誤解していますか、それともDrupalは、便宜上誤った慣行を使用しているのですか、それとも記事が間違っているのですか、それとも他に何かありますか?

6
beth

他のCMSをDrupal=に移行し、ユーザーアカウントを移動した経験があります。Drupalのパスワードアルゴリズムは非常に優れています。

Settings.phpで参照しているソルトは、パスワードには使用されません。 drupal_hash_saltソルトは、Cookieなどの生成に使用されます。したがって、負荷分散された設定の場合、すべてのWebサーバーで同じに保つ必要があると表示される理由。

パスワードの生成は、openssl phpライブラリを使用してランダムに生成されたソルトでSHA512アルゴリズムを使用します(mt_Randまたは他の弱い乱数ジェネレーターではありません)。

パスワードの生成について詳しく知りたい場合は、ここから DrupalのAPIドキュメント を読んでください。

これを生成する関数で、「プライベート」関数を呼び出して新しいパスワードソルト( _password_generate_salt() )を生成していることがわかります。次に、他の多くのプライベートなカスタムDrupal関数を呼び出します(これは長いラビットホールです)。

したがって、一般にDrupalに使用されるパスワードスキームは非常に深くネストされているため、PHP関数は「弱い」と見なされます)を使用しません。

14
Brady