2012-05-03 6 views
2

HttpSessionには、名前、パスワード、電子メールなどのユーザーデータがsetAttributeで保存されています。重要なデータをHttpSessionに保存するのは安全ですか?

HttpSessionに重要なデータを保存するのが安全かどうかを知りたいです。

+4

なぜパスワードをHttpSessionオブジェクトに保存する必要がありますか? – systempuntoout

+1

セッション、クッキー、データベース、キャッシュ(CPUのものを除く:p)、または短命の変数ではないもの。 – ThiefMaster

+0

本当にパスワードを保存する必要はありませんが、jspとel-expresionからすばやくアクセスできるように他のユーザーデータを保存する必要はありません。 Beanにユーザーデータを保存することもできます。 – mulax

答えて

2

(ログインしながら、有効性をチェックする)は、次のユーザー・リポジトリの1つにログイン情報を保存してみてください。

  • では、メモリ(たとえば、それがxmlファイルすることができる)、
  • JDBCベース、
  • LDAPベース。

これは、認証オプションの完全なリストではありません。

少なくともログインやその他の機密データとしてSSL/HTTPSを使用する必要があります。

は、この記事を見てみましょう:What is the best way to prevent session hijacking?

は、いくつかのセキュリティ問題もここで言及されています:What should every programmer know about web development?

+0

しかし、セッションに保存されたデータはサーバから外に出ることはありません。 – mulax

+0

@mulax編集を参照してください。 –

0

理想の練習はNEVERにあるhttp://en.wikipedia.org/wiki/Session_hijacking

そして、ここではその問題に素敵SOの議論でありますアプリケーションの任意の手段でパスワードを保存します。理想的には、DBベースの認証を使用するかLDAP認証を使用する場合は、パスワードをDBのユーザーテーブルに暗号化して保存する必要があります。

正常に認証された後、httpセッションで電子メールや名前などのフィールドを保持できます。セッションでのユーザー名の保持(一意)とプロファイル情報は、データベースの読み取りを実行することにより、このユーザー名に基づいてデータベースから読み取られる必要があります。 はこの情報をクッキーに保存して、頻繁な訪問者に情報を簡単に再登録することができます。

最も重要なことは、隠し変数、クッキー、またはクエリ文字列にパスワードを保存しないことです。

保持しなければならない機密情報はすべてSESSIONに存在する必要がありますが、暗号化されている必要があります。