ベストプラクティス:パスワードをテーブルに保存する最も安全な方法は何ですか?[閉まっている]
-
22-09-2019 - |
質問
PHPを使用しています。私はネイティブの mysql 関数 passwd() を使用してパスワードを保存していました。パスワード() はもう安全ではないと言われました。PHP にパスワードを保存する最良の方法は何でしょうか?MD5ですか?
解決
2016 年に更新された回答:
の優勝者は、 PHC (パスワードハッシュ化コンテスト) アルゴン2. 。2016 年の時点では、Argon2 を使用してパスワードをハッシュすることがベスト プラクティスです。
PHC は 2013 年から 2015 年までオープン コンペティションとして開催されました。これは NIST の AES および SHA-3 コンペティションと同じ種類のプロセスであり、暗号標準を開発する最も効果的な方法です。多くの優れたデザインを含む 24 件の候補があり、その結果、ルクセンブルク大学の Alex Biyukov、Daniel Dinu、Dmitry Khovratovich によって設計されたアルゴリズムである Argon2 が 1 件の受賞者に選ばれました。
従来のアルゴリズムではなく Argon2 を使用することをお勧めします。
2012 年に更新された回答:
以下に示した最初の回答は、かつてはベスト プラクティスであると考えられていました。しかし、ハッシュ コンピューティング技術の進歩により、これらのスキームは脆弱になってきました。今後、安全なパスワード ハッシュ スキームは、次のような反復ハッシュのみとなります。 bcrypt そして PBKDF2. 。完全な議論については、を参照してください。 ジェフ・アトウッドの分析.
元の回答 2009:
最初に を追加することをお勧めします 塩 パスワードに値を入力し、その後に ハッシュ化 次のような適度に強力なハッシュ関数を使用した結果の文字列 SHA256. 。これにより、明白なパスワード (プレーン テキストのパスワード) とそれほど明白でないパスワード (パスワードを使用した攻撃) から保護されます。 レインボーテーブル).
この方法でパスワードを保存すると、 ない ユーザーの紛失したパスワードを取得できるようになります。彼らはパスワードをリセットすることしかできません。これは、 一方向ハッシュ. 。ただし、この制限は通常、より安全なパスワード ストレージ システムを犠牲にする価値があります。たとえデータベースが侵害されたとしても、ユーザーのパスワードは依然として非常に困難であり、攻撃者が回復するのはおそらく現実的ではありません。
他のヒント
bcryptのは、実際にはより安全です。参照:<のhref = "http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know-about-s.htmlを「REL =」nofollowを ">十分ではザ・レインボーテーブルを:セキュリティで保護されたパスワードスキームについて何を必要とするために知っの
あなたは塩にパスワードが必要になります。
vBulletinによっては、パスワードを格納するにはかなり良い仕事をしていません。 MD5(MD5(パスワード)+塩);
は、他の答えを主張するには、vBulletinによっては、パスワードをハッシュの恐ろしい仕事をしていません。彼らの塩はわずか3文字のみを分別アプリケーションのセキュリティを強化されます。
http://www.openwall.com/phpass/ にチェックしてください。彼らは、各パスワードに固有の長いハッシュを使用して、および時間のMD5何千を通じてパスワードを実行しているの優れた仕事をします。それはそこにphpのための最高のハッシュシステムの1つです。
あなたは芋、あなたの最良の選択肢だユーザーのパスワードを保存しないようにすることができます。 (StackOverflowのような)使用のOpenIDは、ユーザーを認証します。またはライブ認証( http://dev.live.com/liveid/ を)。あなたは本当に、本当にユーザーを自分で認証する必要がある場合。アサフは、彼の答えで述べている何をすべきか。 :)
塩とハッシュます。
私たちは通常、塩としてランダムなGUIDを使用して、ハッシュへのSHA512ます。