プロフィール

pikab1

Author:pikab1
ただのチキンプログラマです。よろしく。


個人で作ったアプリ

AkiyoshiFan AkiyoshiFan ハンター文字 まとめDL

初/中級開発者におすすめ


カテゴリ


Twitter


月別アーカイブ


最新トラックバック


最新コメント


検索フォーム

ブロとも申請フォーム

QRコード

QR

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


Struts1.3のセッション管理と危険性


Strutsの危険性とセッション管理についてをシンプルに列挙



とりあえず参考にさせて頂いたURL
http://www.atmarkit.co.jp/fsecurity/rensai/struts04/struts01.html
http://www.javaroad.jp/servletjsp/sj_servlet6.htm

Q, docomoの端末はクッキーを許可していないため、Sessionを保持する事も出来ない。
  PCでもブラウザでクッキーをブロックする設定の場合は同じ。
A, Webアプリにアクセスするクライアントには個々にセッションIDが発行される。
  そのセッションIDを常にURLに付加し、鯖でこのIDはこの人ダナッと判断させる。

例:http://abc?;jsessionid=8692969BBD04A69879B6206276D54D1D

  URLへのセッションIDの付加
  HttpServletResponse の encodeURL(String)メソッドにURLを渡すと、クッキーが使用できないク  ライアントにはセッションを付加したURLを返し、使用可能なクライアントにはそのままのURLを返します。

例:response.encodeURL("/blog/pages/test.jsp")

Q, Strutsを使用した場合は?
A, StrutsはStrutsタグを使用した文なら全て自動でエンコードしてくれます。
しかし、ログイン画面などを作成する場合、セキュリティを考えると下記の内容が重要になります。

下記の3つが当てはまった時危ないらしい。

ログイン前にセッションIDが発行される
任意のセッションIDを付加したリクエスト発行のわなをしかけることができる
ログイン前とログイン後でセッションIDが変化しない


●Actionクラスを使用するとSessionを自動的に生成する。(開発者はどうしようもない?)
 つまりログイン画面表示時に既にセッションIDは生成されている。

●ログイン前と、ログイン後はセッションIDが変わらない。
 つまり下記のように明示的に変えてやる。

/** Actionクラス、Servletなど **/

// ログイン処理を実行して成功したらセッションを再発行
if (認証処理) {
  request.getSession(true).invalidate(); // 再発行
  HttpSession session = request.getSession(true);
  // 新しいsessionにログイン情報をセット
session.setAttribute("isLogin", "OK");
}

/** JSPなど **/

// ログイン情報を取得
String isLogin = session.getAttribute("isLogin");
if (isLogin == null || !isLogin.equals("OK")) {
// 認証失敗処理
}


結論
フィルターを有効活用する。
セッション・・・まだあんまりよく分からない。



コメント

コメントの投稿



管理者にだけ表示を許可する

トラックバック

http://pikab1.blog.fc2.com/tb.php/1-6a5d61d1

 | ホーム |  page top


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。