JSF で新しいサイトをプログラミングしています。現時点では、ログインをプログラムしています。
私は数年前に md5 を使用していましたが、Rainbow Tables を使用すると、もう安全だと思います。
では、パスワードをデータベースに保存するにはどうすればよいですか?
4 に答える
ここに優れた詳細なガイドがあります: https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2007/july/enough-with-the-rainbow-tables-what-you-need -to-know-about-secure-password-schemes/
最初に行うことは、ベンダーから事前に構築されたシステムを探すことです。手遅れになるまで気づかない微妙な方法で間違いを犯すのは非常に簡単なので、生計を立てるためにセキュリティ コードを書いている人には、できるだけ多くのことをプッシュしたいと考えています。このようにして、それらからサービスの更新を取得することもできるので、もう考える必要はありません.
さらに、アカウントごとのソルトを生成してパスワードに使用し、安全なハッシュ アルゴリズムを使用することを忘れないでください (md5 は速度を目的としており、必ずしもセキュリティを目的とはしていません)。SHA1 もかなり一般的ですが、古くなり始めています。
sha512 でハッシュしてソルティングすることをお勧めします。(全員のランダムな値を保存し、パスワードとその値を一緒にハッシュします。)
PKCS#5 を調べると (または、既にそれを行っている評判の良い実装を見つけてください)、非常に優れたメカニズムが見つかります。
基本的には、数字 (たとえば 500)、パスワード、ハッシュ アルゴリズム、およびソルト (推測されにくくするためにパスワードの末尾に追加されるランダム データ) を選択します。
- パスワードを取得し、ソルトして、ハッシュします。
- 結果を取って、それを塩にします(同じ塩)そしてそれを持っています。
- 手順 2 を N 回繰り返します (この例では、N は 500 です)。
- 最終的にハッシュされ、ソルト化された結果を、N およびソルト自体とともにパスワード データベースに保存します。