「ユーザーの資格情報を保存しないで、塩とコショウでハッシュしてください! 」と考えているかもしれませんが、読み進めてください。
データベースの資格情報 (ログイン/パスワード) についてユーザーに尋ねるプロジェクトに取り組んでいます。これらの資格情報はデータベースに対して試行され、接続が成功した場合は、ユーザーの要求に応じてデータベースで何らかの作業を行うために資格情報を「保持」します (テーブルの作成、行の変更、SELECT の実行など)。
つまり、ユーザーが何かを行うたびに、リクエストを実行する前にデータベースに再接続します => 資格情報は後続のリクエストで役に立たないため、ハッシュできません。必要に応じて、phpMyAdmin のようなものです。
それでいろいろな可能性を思いつきましたが、それぞれに欠点があります。どちらが良いかを判断するための提案を探しています。
- ログイン/パスワードが clear のセッション Cookie を使用するだけです。ただし、HTTPS を介した使用のみを許可します。これは、実装する最も簡単な方法です。私が見る唯一の欠点は、クライアント側に XSS がある場合、資格情報を取得できることです。
- 同じセッション Cookie ですが、 AES を使用して暗号化されたログイン/パスワードを使用します。それは私が信じているPhpMyAdminによって使用されているものです。HTTPS のみを許可することで、さらに先に進むことができます。
- 資格情報をローカル セッション ストレージ(sqlite の session.db) に平文で保存し、指定されたトークン + ブラウザーの詳細を使用して取得されるクライアントのトークンを使用します。欠点 : 攻撃者が session.db ファイルにアクセスすると、ファイルから削除されていないセッションを読み取ることができます。彼が session.db にアクセスできれば、それらを暗号化するために使用される SECRET_KEY にも確実にアクセスできるため、それらを暗号化することは有用ではないと思います。
どう思いますか?あなたならどうしますか?