Webサイトのプライベートゾーンで暗号化を行う必要があり、ユーザーのパスワードをbcrypt
したいです。
ユーザーがログインするときにセッションにパスワードを保存して、後で使用できるようにしても安全ですか?
パスワードをセッション変数に保存しないでください。代わりに、代理キーを使用してください。
例えば:
ユーザーがログインすると、次のようになります。
攻撃者が/tmp
ディレクトリに保存されているセッションデータへの読み取りアクセス権を取得すると、代理キーが抽出される可能性があります。ただし、ユーザーのパスワードを取得することはできません。これはサーバー上で暗号化しているデータを保護しませんが、ユーザーのアカウントへの不正アクセスを防ぎ、ユーザーが他の場所で同じパスワードを使用した場合の攻撃を阻止します。
PHPを安全に使用したい場合は、 Suoshin Hardened PHP patch がインストールされている必要があります。このパッチには、セッションデータを自動的に暗号化する機能が含まれており、特定の種類の攻撃から保護するのに十分です。
ただし、セッションハッキングはハッカーのツールボックスの1つの項目にすぎず、パスワードが主なターゲットであるため、プログラムは(メモリ内であっても)しばらくの間ハングアップするものとして扱われるべきではありません。パスワードは入力後できるだけ早くハッシュ化する必要があり、パスワード文字列自体はすぐにクリアされます。
したがって、あなたの質問に対する私の答えは「いいえ」です。後で再利用するためにパスワードを保持することを検討すべきではありません。