• ベストアンサー

セキュリティーを確保したセッション管理

現在、javaにて開発を計画中です。 作成するアプリケーションは、 ログイン画面 ↓ ユーザ、パスワード入力 ↓ 認証(データベースに登録された内容チェック) ↓ ユーザごとに許可されたページへの遷移 といった流れを想定しています。 セッション管理を行なう上で、 Javaでは、「HttpSession」を利用して、   // セッション開始   HttpSession session = request.getSession(true);   // セッションに情報を設定   session.setAttribute("USER_ID" , xxxx);   session.setAttribute("PASSWORD" ,yyyy); といった情報をセッションに保存し、ページ移動時にチェック する事を考えました。 あとCookieを利用する方法も考えましたが、CookieにID、passwordを保存することは セキュリティー上問題あると思います。 セッション管理について説明しているページには、Cookieには、セッションIDを保存し・・・とった 記述があるのをよくみます。 セキュリティー上、Cookieを利用する意味もよく分かっていません。 みなさんは、どのようにセッション管理をされているのか教えてください。 出来るだけセキュリティーを確保したいと思っています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

本を読んだだけで実際にセッション管理をしたことはないのですが・・ No.1さんが書かれている通り、セッション管理の方法には 1) cookieを利用する 2) URLを利用する 3) hiddenフィールドを利用する という3つの方法がよく知られているようです。 セッションを管理するための情報としては(ユーザ)IDやパスワードではなく、セッションIDと言うものを用います。セッションIDは一般的に乱数を使ってランダムに生成します。ユーザIDやパスワードのような固定な値をセットしておくと一旦漏れてしまった場合に漏れた値をいつでも好きなときに侵入者に使われてしまいます。しかし、セッションIDはセッション開始時に生成され、セッション終了時に破棄してしまうため、例え漏れてしまったとしても侵入者はいつでもそれを使えるわけではありません。(セッション中にIDを奪って使う「セッションハイジャック」の可能性はありえます) セキュリティの問題としてセッション管理の問題もありますが、クロスサイトスクリプティングやSQLインジェクションの問題もあったりするので、その辺りも気をつけたほうがよいと思います。

kaisyain2005
質問者

お礼

回答有難うございます。 Web開発におけるセキュリティーについて、まだまだ知識不足ですので、今後も調査していきたいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • syousuke
  • ベストアンサー率61% (13/21)
回答No.1

上記のコードでいえば、sessionにパスワードを保存する必要は、疑問だと思います。 Cookieはサーバ側でsessionを識別する方法の一つです。 クライアント側でCookieを利用できない場合、sessionは、URLに含めるかINPUTタグ(HIDDEN?)にて送る等の方法をとる必要が有ります。

kaisyain2005
質問者

お礼

回答有難うございます。 パスワードの保存は確かに必要ないですね。 認証が出来たフラグを持っておけばよいのかもしれないです。

すると、全ての回答が全文表示されます。

関連するQ&A