ユーザー名/パスワードなど、覚えて安全に保つ必要がある情報など、クライアントの詳細の一部を保存するアプリを作成しています。
この情報を安全に保管するための最良の方法は何ですか?
ユーザー名/パスワードなど、覚えて安全に保つ必要がある情報など、クライアントの詳細の一部を保存するアプリを作成しています。
この情報を安全に保管するための最良の方法は何ですか?
このような自由回答形式の質問で、詳細はあまりありません。先に進む前に、 Chris Shiflett の優れた「Essential PHP Security」を読むことをお勧めします。それは要点まで短く、非常に実用的です。
また、書籍の Web サイト ( http://phpsecurity.org/ ) からも適切な量のアドバイスを入手できます。
実際にはかなり単純です。簡単な MySQL データベースとユーザー テーブルをセットアップします。そのユーザー テーブルで、ユーザー名を列に格納し、パスワードのハッシュ バージョンを別の列に格納します。
セキュリティを強化するために、ランダムな 8 文字の文字列を生成し、それを各行に保存するのが好きです。その列を「キーコード」と呼びます。ユーザーが正しいユーザー名/パスワードでサインインすると、その認証を、一致する「キーコード」と同様にセッション変数に保存します。
そうすれば、セッション認証は正しいユーザー名/パスワードを探すだけでなく、データベースにすばやくクエリを実行し、セッション変数に格納されている「キーコード」が行のキーコードと同じかどうかを確認できます。
ユーザーでさえキーコードを知らないため、うまく機能します。
パスワードに関する限り、パスワードのハッシュを保存する必要があります。ユーザーを認証するときはいつでも、入力されたパスワードをハッシュし、結果を保存したものと比較します。この方法では、実際のパスワードを保存していません。