web-dev-qa-db-ja.com

Drupalのデフォルトのパスワード暗号化方法は何ですか?

Drupal 6/7がデフォルトでパスワードを保存するために使用するセキュリティです。MD5、AES、SHAですか?何も見つかりませんでした。

42
Chris Abrams

Drupal 8およびDrupal 7はデフォルトでソルトと共にSHA512を使用します。PHPの hash 関数を介してハッシュを何度も実行し、パスワードの最終ハッシュを生成する計算コストを増やします。 ( stretching と呼ばれるセキュリティ手法)。

Drupal 8の場合、実装はオブジェクト指向です。ハッシュメソッドを定義する PasswordInterface があります。そのインターフェースのデフォルトの実装は PhpassHashedPassword class。そのクラス ' hash メソッドは crypt メソッドを呼び出し、ハッシュアルゴリズム、パスワード、および生成されたソルトとしてSHA512を渡します。クラスのcryptメソッドはDrupal 7の _ password_crypt() メソッドとほぼ同じです。

Drupal 7の場合、実装はいくつかのグローバル関数に分割されます: ser_hash_password() および _ password_crypt()

Drupal 6は、塩なしのMD5を使用します。関連する関数は ser_save() です。

68
CalebD

以下はDrupal 7:からのハッシュの例です:

  • 「パス」:「$ S $ Dxl65W9p07LfQU7jvy5CnsyDpMoLujiAgzy123khcg1OJi/P9pKS」

  • 文字0〜2はタイプです($ S $はDrupal 7)

  • 文字3は、このリスト内のcharの位置に基づくlog2ラウンド(X)の数です: './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'この例では、「D」は15
  • 文字4-11はSALTです
  • 残りは2 ^ Xラウンドを使用したSHA512ハッシュです。
  • バイナリの結果は、base64を使用して文字列に変換されます。

    $ count = 1 << $ count_log2;
    $ hash = hash($ algo、$ salt。$ password、TRUE);
    do {$ hash = hash($ algo、$ hash。$ password、TRUE);
    } while(-$ count);

プロセス全体は、mydrupalsite\includes\password.incにあります。

32
Ray Hulha

Www\includes\password.inc内で確認できます

function user_check_password($password, $account) {
  if (substr($account->pass, 0, 2) == 'U$') {
    // This may be an updated password from user_update_7000(). Such hashes
    // have 'U' added as the first character and need an extra md5().
    $stored_hash = substr($account->pass, 1);
    $password = md5($password);
  }
  else {
    $stored_hash = $account->pass;
  }

  $type = substr($stored_hash, 0, 3);
  switch ($type) {
    case '$S$':
      // A normal Drupal 7 password using sha512.
      $hash = _password_crypt('sha512', $password, $stored_hash);
      break;
    case '$H$':
      // phpBB3 uses "$H$" for the same thing as "$P$".
    case '$P$':
      // A phpass password generated using md5.  This is an
      // imported password or from an earlier Drupal version.
      $hash = _password_crypt('md5', $password, $stored_hash);
      break;
    default:
      return FALSE;
  }
  return ($hash && $stored_hash == $hash);
}

「// A通常Drupal 7 sha512を使用した7パスワード」。

11
Tarun Gupta

Drupal 6コアの場合、このメソッドはMD5を使用しますが、私が理解しているように、ソルティングは使用されません。drupal 7ここでの良い記事- http://joncave.co.uk/2011/01/password-storage-in-drupal-and-wordpress/

5
David Gillen

drupal 8はPhpass(修正版)を使用しています

drupal 7はSHA-512 +塩を使用します

drupal 6および以前のバージョンは、ソルトなしでmd5を使用していました

0
user889030