学習用のユーザーログインシステムを作りたいです。いくつか質問があります。
いくつかの調査を行ったところ、ユーザー ログイン システムを実装する適切な方法は、ユーザー名/ID とパスワードの暗号化/ハッシュ バージョンをデータベースに格納することであることがわかりました。ユーザーがログインすると、パスワードはクライアント側 (MD5、SHA-1 など) で暗号化され、サーバーに送信されてデータベース内のパスワードと比較されます。それらが一致する場合、ユーザーは正常にログインします。
この実装により、DBA やプログラマーがデータベース内のパスワードの平文を見ることができなくなります。また、ハッカーが転送中に実際のパスワードを傍受するのを防ぐこともできます。
ここで私は混乱しています:
ハッカーが (データベースをハッキングして) パスワードのハッシュ化/暗号化されたバージョンを知っている場合、または DBA は、データベース内のテキストを読み取るだけでパスワードのハッシュ化されたバージョンを取得します。次に、このハッシュ化されたバージョンのパスワードをサーバーに送信して、正常にログインできるようにするプログラムを簡単に作成できます。それができる場合、パスワードの暗号化はあまり役に立ちません。ここで何かを誤解していると思います。
これ (上記で説明した方法) は、ユーザー ログイン機能を実装する最も一般的な方法ですか? 現在のベストプラクティスに従っていますか? すべてを手動で行う必要がありますか?それとも、同じことを行う機能が組み込まれているデータベースがありますか? ウェブサイトまたはウェブアプリでこれを行う最も一般的な方法/方法はありますか? もしそうなら、詳細を教えてください。
私の以前の会社では、couchDB を使用して、パスワードを含むユーザーのログイン情報を保存していました。彼らは物事の暗号化の側面についてはあまりやりませんでした. 彼らによると、couchDB は自動的にパスワードを暗号化し、ドキュメントに保存します。これが安全な方法かどうかはわかりません。もしそうなら、多くの作業を節約できるので、プログラマーにとってはかなり便利です。
この方法 (ポイント 3) は、通常の使用に十分安全ですか? mySQL などの他のデータベース システムには、同じことを実行できるこの種の機能がありますか? もしそうなら、それは mySQL 組み込みメソッドを使用することは十分に安全であることを意味しますか?
ユーザーログイン機能を実装する非常に安全な方法を探しているわけではありません。私はむしろ、人気があり、実装が容易で、適切で、ほとんどの Web アプリケーションにとって十分に安全な方法を探しています。アドバイスをお願いします。提供された詳細は本当に高く評価されます。