2011-02-01 30 views
3

イントラネットアプリケーションのユーザー名とSHA1ログインを保存する最善の方法は何ですか?ログインとパスワードのハッシュをセッションに安全に保存していますか?

マルチドメイン情報、ユーザー名、パスワードハッシュなどの情報を保持するためのセッションは比較的安全ですか?私はそれらを保つSession["data"] = customObject()

これらのデータを安全にするために追加の手順を実行する必要がありますか?潜在的なセキュリティ上の問題やセキュリティホールが侵害される可能性はありますか?ある種のセッション注入?私はいくつかの秘密鍵のプロセスを使用してセッションデータをロック/オープンする必要がありますか?

答えて

4

パスワードハッシュを保存するのは安全です。パスワードをハッシュする考えは、パスワードにリバースエンジニアリングすることができないようにすることです。そのため、ハッシュされたパスワードは推奨される方法であり、一般にデータベース(つまりASP.netメンバーシッププロバイダ)に格納されます。あなたは暗号化を使用していますが、ハッシュより安全性が低いIMHOです。

セッション状態でハッシュパスワードを格納すると、inProc、sqlserverまたはsession serverのいずれかが正常です。未処理のパスワードを格納することは、ぶつかる攻撃であるべきです。

SHA1が安全でないと判断されたため、フォームまたはURL情報を使用してハッシュされたパスワードを世界に公開することは避けてください。 SHA256をお勧めしますが、いずれにしてもハッシュを公開しません。

私はなぜこの情報を保持したいのだろうかと思います。私はそれが持っているいかなる価値も考えることはできません。パスワードがハッシュされると、そのパスワードを使用して別のサイトにユーザーを再認証することはできません。

+0

これは私の他の質問です。パスワード情報を保存する必要がありますか?フォームを使用してログインし、実際に私がユーザーXYであることを確認したら、パスワードなしでユーザー名を保持しているセッションデータを使用しても安全ですか?サイト全体のデータを処理し、権限を確認する必要がある場合は十分なユーザー名を保持するか、またはすべての時間とすべての単一ページでユーザー名/パスワードチェックとデータベースを行う必要がありますか? – feronovak

+0

一度それらを認証して、フォーム認証チケットを取得すれば、それが誰であるかを確認するだけです。アクセス許可を検証するには、認証されたユーザーの名前を渡して、asp.net内のRoleManagerの例を参照する必要があります。あなたはパスワードが必要で、私が言ったように、それが一度ハッシュされたら、私は何の使い方もしていません。 – Xhalent

+1

セッションハイジャックのようなものはどうですか? – FRoZeN

0

セッションデータが格納されている場所によって異なります。 InProcなら、あまり心配する必要はないでしょう。 SQLサーバー上では、もう少しリスクがあるが、それでもあなたのコントロール下にあるもの。なんらかの理由でセッション状態データをページ状態に格納している場合は、問題があります。

関連する問題