1

ユーザーパスワードをハッシュするためのコーディングを始めたとき、私は最初にMD5を使用しました。

 $password1 = md5($password);

意見の違う無数のページを読んだ後、何を使うのでしょうか? crypt、、 ...これはSHA1SHA256SHA1と静的ソルティングを使用してコードを修正した例です。

$salt = '324912343223942833294328432392';
$passwordarray = str_split($password,2);
$password1 = sha1($passwordarray[0].$salt.$passwordarray[1]);
//insert $password1 into database

ログインしてパスワードを確認するとき。

$salt = '324912343223942833294328432392';

    $passwordarray = str_split($password,2);
    $dbpasswordarray = str_split($dbpasswordarray,2);

    $password = sha1($passwordarray[0].$salt.$passwordarray[1]);
    $dbpassword = sha1($dbpasswordarray[0].$salt.$dbpasswordarray[1]);

               if ($username==$dbusername&&md5($password3)==$dbpassword)
               {    

このコードを改善/変更し、より安全にするために何をすればよいですか?..例を挙げてもらえますか..動的ソルティングを実行して、データベース内の各ユーザーに一意のソルトを追加しますか?

4

4 に答える 4

3

bcryptを使用する必要があります。

MD5、SHA-1などの問題は、計算が高速になるように設計されていることです。これにより、1秒間に数百万のパスワードをテストできるため、ブルートフォース攻撃や辞書攻撃が容易になります。

Bcryptは意図的に遅くすることでこれを解決します。ハードウェアが向上するにつれて計算をより困難にすることができるように調整できる作業係数があります。

関連している

于 2012-06-30T04:11:26.547 に答える
0

これは、ログインを保護するためにどれだけの努力を払うかという問題の一部です。ここ数年、私は動的ソルティングに移行してきました/各ユーザーは独自のソルト値を持っています。これにより、ハッカーがデータベースを入手した場合にレインボーテーブルを使用できなくなります。また、sha256ハッシュを使用します。

于 2012-06-30T04:12:26.053 に答える
0

たぶん、既存のライブラリやフレームワークの例に従うことができます。

たとえば、DjangoFrameworkは次のように説明しています。

Djangoがパスワードを保存する方法

Userオブジェクトのpassword属性は、次の形式の文字列です。

アルゴリズム$ハッシュ

これは、ドル記号文字で区切られたストレージアルゴリズムとハッシュです。このアルゴリズムは、Djangoが使用できるハッシュまたはパスワードストレージアルゴリズムの1つです。下記参照。ハッシュは一方向性関数の結果です。

デフォルトでは、DjangoはSHA256ハッシュを使用したPBKDF2アルゴリズムを使用します。これは、NISTが推奨するパスワード拡張メカニズムです。これはほとんどのユーザーにとって十分なはずです。非常に安全であり、中断するには膨大な計算時間が必要です。

また、パスワードを保存する際の推奨プラクティスに関する役立つリンクも提供しています:http: //csrc.nist.gov/publications/nistpubs/800-132/nist-sp800-132.pdf

ソースhttps ://docs.djangoproject.com/en/dev/topics/auth/

于 2012-06-30T04:13:24.233 に答える
0

パスワードのハッシュ/ソルト/チェックなどを処理するライブラリを調べます。実装が簡単なのは、ポータブルPHPパスワードハッシュフレームワークです。これは、wordpressや他の多くのphpアプリケーションで使用されているものと同じライブラリです。利用可能な最も安全なphpハッシュアルゴリズムを自動的にチェックします。phpディストリビューションはさまざまなアルゴリズムをサポートしているため。このようにして、移植性を犠牲にすることなく、可能な限り最大限のセキュリティを得ることができます。

それは私に多くの頭痛を救うので、私はそれが本当に好きです。私は、セキュリティ暗号化に関して、私よりも賢い人に頼りたいと思っています。

于 2012-06-30T06:10:10.657 に答える