-1

ユーザーに追加できるパスワードに最適なソルトを探しています。

次のような小さなソルトでユーザーパスワードを既に保存しています:

$pass = "deerox";
$salt = "fg55fd45";
$password = md5($pass . $salt);

したがって、私は今使用できる最高のソルトがsha512必要であり、攻撃者が 1 つのパスワードをクラックするのに何年もかかるはずです。

すでにパスワードを保存したと言ったので、すべてのユーザーに対してランダムなソルトを生成することはできません。

$pass1 = "deerox";
$pass = md5($pass1);
$salt1 = "fRY^YXCH%^d5fdffdstre324e6t45";
$salt2 = "sdgdfg#$#$@%FDG%GFDG54fds545342";
$password = hash("sha512", $salt1 . $pass . $salt2);

それが安全であることを知りたいだけですか、それとももっと安全にすることができますか??

4

2 に答える 2

3

パスワード暗号化スキームが正しくありません。それに何かを付けても、実質的に安全になるわけではありません。必要なのは、最初から適切なハッシュとソルティングです。もう手遅れであり、すでにハッシュ化されたパスワードのセキュリティを実際に改善することはできません.

1 つまたは 2 つの静的なソルト、またはパスワード自体から派生したソルトは、ソルトではありません。ソルトは、各ハッシュに一意性を追加するために、パスワードから独立したランダムな一意の値である必要があります。

どのパスワードが現在「レガシー」ハッシュ システムを使用しているかを示す新しいフラグをデータベースに追加します。ユーザーが次回ログオンし、平文のパスワードを取得する機会があれば、その機会を利用して、より優れたシステムでパスワードを再ハッシュし、データベースのフラグを更新します。このようにして、ユーザーベースを完全に透過的に安全なハッシュに少しずつアップグレードできます。

パスワードごとの動的ソルトと、bcrypt や scrypt などの適切なハッシュが必要です。http://github.com/ircmaxell/password_compatを使用して、両方を実装する優れた使いやすいライブラリーを入手してください。

于 2013-06-08T12:31:57.813 に答える
0

まず、パスワードを 2 回ハッシュしないでください。

次のこと。データベースがある場合は、すべてのユーザーがランダムなソルトをデータベースに設定する必要があります。コードにソルトを追加します (既に行っているように)。

パスワードに sha1 または md5 を使用しないでください。sha512 を使用できます。また、ここで適切なパスワードハッシュに関する詳細情報を確認できます。

PHP パスワードの安全なハッシュとソルト

于 2013-06-08T12:23:14.423 に答える