5

私は最近、ハッキングされている有名な Web サイトに関する最近のニュース記事に続いて、サイトのセキュリティの概要を説明しました。リンクトイン

だから私の質問は:

ユーザーのパスワードを、ユーザー名やその他の情報とは完全に分離して保存するにはどうすればよいですか? このようにして、ハッカーは、対応するユーザー名ではなく、パスワードのみを取得できる可能性があります。

編集:私はすでにパスワードをハッシュとして保存していることを忘れていました(そしてそれをソルトしています)。

4

5 に答える 5

4

どのように行っても、認証メカニズムがユーザー名とパスワードを結び付ける方法が必要なため、何をしようとしても無駄です。

そのルートに進むのではなく、パスワードを復号化できないハッシュ値として保存する必要があります。これは、受け入れられているベスト プラクティスです。

http://blog.moertel.com/articles/2006/12/15/never-store-passwords-in-a-database

于 2012-06-08T14:49:20.040 に答える
2

セキュリティを追加する最良の方法は、Google アカウントの使用と同じだと思います。正しいパスワード (必要なアルゴリズムを使用してデータベースにエンコードされていますが、Bcrpyt をお勧めします) でログインすると、携帯電話に秘密のコードが届きます。電子メールを使用してそれを行うことができます。複雑になりつつあります。塩などを追加して、ハッキングを難しくすることもできます。

作成できる場合は、元に戻すことができることを忘れないでください。いつも。それは、方法、時間、いつかお金、そして意志の問題です。

あなたの質問については、いいえ。常にユーザー名 (つまり、アカウント) をパスワードに関連付ける必要があります。これを2つのサーバー上の2つのデータベースに保存し、ソルトとハッシュを使用して複数のサーバーを使用できると思いますが、正しく受け入れられている方法は、私が言ったようにアルゴリズムを使用してエンコードし、比較することです.

于 2012-06-08T15:07:34.923 に答える
1

サイトでユーザー名とパスワードを分けておく最もクリーンな方法は、単純にパスワードをまったく保持しないことです。

パスワードと認証を Google などのサードパーティ サービスに委任し、OpenID を実装します。
http://openid.net/
次に、ユーザー名を保存するだけで、パスワード データの知識がないため、侵害を開始することは不可能になります。パスワードとユーザー名がシステムに接続する必要はありません。まったく。
このトピックに関するジェフ・アトウッドは次のとおりです

編集:以下のコメントへの回答として、Google アカウントが侵害された場合、すべての子会社のアカウントが侵害された可能性があります。これが、Google のような安全な認証方式が不可欠な理由です。ここで車輪を再発明する必要はありません。2 段階認証を使用して Google アカウントをさらに保護することができます
http://www.codinghorror.com/blog/2012/04/make-your-email-hacker-proof.html
すべてのサイトが行動を起こすことを期待すべき理由がわかりません別個のオーセンティケーターとして... セキュリティを犠牲にして Web の断片化を促進します。

于 2012-06-08T15:13:21.100 に答える
0

私が読んだことから、LinkedInはSHA1暗号化を使用して無塩の暗号化されたハッシュパスワードを使用しています。パスワードも「ソルト」する方が賢明なようです。あなたが各ユーザーのためにランダムな塩で塩漬けしているなら、あなたはかなり良い状態にあります。そうでない場合:

これは、ランダムなビット文字列を生成し、ハッシュする前にそれらをパスワードに連結することを意味します。さらに、各ユーザーのランダムビット文字列を保存し、ユーザーがハッシュするパスワードを提供したときにデータベースからそれをプルします

パスワードは「ソルト」(ユーザー用に保存されているソルトと連結)され、そのソルトされた文字列はハッシュされ、データベース内のユーザーのハッシュパスワードで検証されます。これにより、ほぼ確実に一意のハッシュが保証され、パスワードのハッシュテーブルがはるかに困難になります。ハッシュ関数の出力は、各ユーザーに割り当てられたカスタムソルトも知っていることに依存しているため、リバースエンジニアを論理パスワードに戻します。

LinkedInがハッシュをソルトしない理由を誰かが知っているなら、私はあなたから聞いてみたいです。私が読んだすべてのことから、SHA1は時間とともに簡単に解読できます。

于 2012-06-08T15:14:47.927 に答える
0

パスワードを保存するのではなく、パスワードのハッシュを保存します。

幸いなことに、mysql はこれに対して安全な (一方向) ハッシュ関数を提供します。PASSWORD()

次のように、クエリはプレーン テキストのパスワードの代わりにハッシュを保存するだけです。

update user_table set
password = PASSWORD(?)
where user_id = ?

次のように確認できます。

select * from user
where user_id = ?
and password = PASSWORD(?); // returns the row if password correct

公式の mysql ドキュメントの MySQL でのパスワードハッシュの記事では、すべてが完全に説明されています。

于 2012-06-08T15:02:31.170 に答える