セッション状態でユーザーが入力したパスワードを保存することを検討しています。私が気づく必要があるセキュリティ上のリスクや問題はありますか?セッションにパスワードを保存する
答えて
はい。これは本当に悪い考えです。データベースにパスワードを格納すべきではありません。代わりにパスワードのハッシュを保存することをお勧めします。したがって、パスワードを検証することはできますが、誰かがデータベース(またはあなたのケースではセッション状態)にアクセスすると、実際にはユーザーのパスワードを持っていないことになります。
この関連記事を読んしかし、セッション状態必ずしもデータベースに格納されているとは限りません。セッション状態が維持されない場合、パスワードをセッション状態に保存することはできますか? – BlueMonkMN
パスワードは決してどこにでも保存するべきではありません。 salt + hashパスワードがサーバーに到達するとすぐに、その結果に対してのみ動作します。ユーザーの生のパスワードを操作する必要はありません。 –
私はそれに同意していましたが、それは理想主義的な世界であり、私たちがその世界に住んでいることはわかりません。 Webサーバーがトークンベースの認証をサポートしていない第三者コンポーネントと対話する必要がある場合、パスワードは唯一の方法です。私が電子請求用に使用するサイトは、パスワードを要求して第三者から請求書を受け取ることができます。他の人がそのデータを保持している場合に第三者にログインできるようにするためのものを保管していると思われます。私はちょうどサイトが理想的な種類のインターフェースを提供しているとは思わない。 – BlueMonkMN
asp.netには、セッションデータを格納できる場所が多数あります。最も一般的な開発では、InProc、または基本的にはRAMメモリです。しかし、ある日、データベースなどの別のセッションプロバイダを使用するか、Windows Azureキャッシュを使用するかを決めることができます。 パスワードをクリアテキストで保存すると、これらの両方のケースでネットワークを介して送信されたときにパスワードが表示されます。
上記のシナリオでは、セッションデータがネットワーク経由で転送される場合、転送がhttpsで送信されない限り、クリアパスワードが表示されます。
あなたの答えは質問との関連がありません –
@palmsnow実際、olivehourの答えは話題でした。 'Session'でパスワードを入力すると、ある時点で外部セッション記憶機構を使用する可能性があるため、パスワードを平文でワイヤに送信する可能性があることを指摘していました。私はそれが良い点だと思う。 +1 –
@AndrewBarber thatsあなたがサーバーの間で安全なチャネルを使用しない場合にのみ真実 –
http://stackoverflow.com/questions/4862096/is-storing-login-and-password-hash-in-session-secure-net-c-sharp –